在previous questionä¸ï¼Œæ供了一个解决方案,用于在å•ç‹¬çš„工作表上创建主列表的动æ€å集。我需è¦åšä¸€äº›éžå¸¸ç›¸ä¼¼çš„äº‹æƒ…ï¼Œä½†ä¼¼ä¹Žæ— æ³•æ ¹æ®æˆ‘的具体需è¦ä½¿è§£å†³æ–¹æ¡ˆé€‚应其他问题。
我的情况是我有35个å¸æˆ·è¦è°ƒå’Œã€‚æ¯ä¸ªå¸æˆ·éƒ½æœ‰ä¸€ä¸ªå”¯ä¸€çš„五ä½æ•°å—。主数æ®åˆ—表有6列。我想为35个å¸æˆ·ä¸çš„æ¯ä¸ªå¸æˆ·åˆ›å»ºä¸€ä¸ªå·¥ä½œè¡¨ï¼Œæ¯ä¸ªå·¥ä½œè¡¨åªä¼šæå–第三列与特定工作表å¸æˆ·åŒ¹é…的行。
进一æ¥é˜è¿°ã€‚我们åªæ‹¿ä¸‰å五个ä¸çš„三个。我们将使用40000,40100å’Œ40200.å…列是“æ¡ç›®IDâ€ï¼Œâ€œæ—¥æœŸâ€ï¼Œâ€œå¸å·â€ï¼Œâ€œå€Ÿè®°â€ï¼Œâ€œä¿¡ç”¨â€å’Œâ€œå‚考â€ã€‚
在工作表1“40000â€ä¸Šï¼Œæˆ‘想拉出å…列数æ®ï¼Œä»…用于“å¸å·â€=我的工作表å称(40000)的行。在第二个工作表,å为“40100â€ï¼Œæˆ‘åªæƒ³åœ¨â€œå¸å·â€åˆ—ä¸ä¸ºåŒ…å«â€œ40100â€çš„è¡Œæå–å…列数æ®ï¼Œåœ¨ç¬¬ä¸‰ä¸ªå·¥ä½œè¡¨ä¸Šï¼Œç§°ä¸ºâ€œ40200â€ï¼Œæˆ‘想在“å¸å·â€åˆ—ä¸æå–包å«â€œ40200â€çš„å…列数æ®ã€‚
上一个ç”案æ供了一ç§åœ¨å•ç‹¬çš„工作表上创建å集的方法,但键值与主数æ®åˆ—表在åŒä¸€å·¥ä½œè¡¨ä¸Šã€‚我希望在æ¯ä¸ªå·¥ä½œè¡¨ä¸Šåˆ—å‡ºé”®å€¼ï¼Œè¿™æ ·æˆ‘å°±ä¸éœ€è¦ä¸ºæ¯ä¸ªå¸æˆ·æ供完整的数æ®åˆ—表。
编辑: This is the initial question/answer我在上é¢çš„问题ä¸æ到过。我喜欢使用“排åâ€çš„底层解决方案,但就åƒæˆ‘上é¢è¯´è¿‡çš„é‚£æ ·ï¼Œå¦‚æžœé”®å€¼å¯ä»¥åœ¨æ¯ä¸ªå·¥ä½œè¡¨ä¸Šï¼Œæˆ‘会很喜欢它,å³40000,40100,40200ç‰ç‰ï¼Œè€Œä¸æ˜¯ä¸»æ•°æ®åˆ—表。关键值是工作表å称,å³å¸å·ï¼ˆ40000,40100ç‰......)
床å•å·²ç»å˜åœ¨ã€‚æ¯ä¸ªæœˆæˆ‘åªæ‰“开上个月的工作表,将其ä¿å˜ä¸ºæˆ‘的新月份,并用新月份的数æ®è¦†ç›–æ•°æ®ã€‚
éžå¸¸æ„Ÿè°¢ä»»ä½•å¸®åŠ©ã€‚
谢谢ï¼
ç”案 0 :(得分:1)
é€šè¿‡å‡ ä¸ªåµŒå¥—å¾ªçŽ¯å¾ˆå®¹æ˜“å®žçŽ°ã€‚
关键è¦ç´ 是:获å–æ¯ä¸ªå·¥ä½œè¡¨çš„最åŽä¸€è¡Œï¼Œå¹¶å¾ªçŽ¯é历行,工作表和列,使用IFè¯å¥æœ‰æ¡ä»¶åœ°æµ‹è¯•å¸å·æ˜¯å¦ä¸Žå·¥ä½œè¡¨å称匹é…。
让我们从头到尾看一下。跟éšè¯„论:
<强> 1。循环æµè§ˆæºè¡¨ï¼Œæ¯ä¸€è¡Œ
<强> 2。é历æ¯ä¸ªå·¥ä½œè¡¨ä»¥æŸ¥æ‰¾tempAccount值与工作表å称的匹é…
第3。找到匹é…åŽï¼Œå¾ªçŽ¯é历从一个工作表å¤åˆ¶åˆ°ä¸‹ä¸€ä¸ªå·¥ä½œè¡¨çš„所有6列。
<强>试验:强>
Private Sub AccountsToSheets()
Dim lastRow As Long 'Last Row on source sheet
Dim lastTRow As String 'For last Target Row
Dim target As String 'For temp name
Dim tRow As Long 'Target Row
Dim source As String 'Source Sheet Name
Dim tempAccount As String 'Variable for account number
Dim ws As Worksheet 'For looping through worksheets
'----SETUP VARIABLES----;
source = "Sheet1" 'Define Name of Source Sheet HERE
lastRow = Sheets(source).Range("A" & Rows.count).End(xlUp).row
'----BEGIN LOOP THROUGH SOURCE SHEET----'
For lRow = 2 To lastRow
tempAccount = Sheets(source).Cells(lRow, "C").Text
'--BEGIN LOOP THROUGH WORKSHEETS TO CHECK FOR MATCH--'
For Each ws In Worksheets
If ws.Name <> source Then 'Eliminate checking Source Sheet
If ws.Name = tempAccount Then 'Use sheet that's name matches tempAccount
target = ws.Name
lastTRow = Sheets(target).Range("A" & Rows.count).End(xlUp).row
tRow = lastTRow + 1 'Set the row value on target sheet
'--LOOP THROUGH ALL COLUMNS AND COPY DATA--'
For lCol = 1 To 6
Sheets(target).Cells(tRow, lCol) = Sheets(source).Cells(lRow, lCol)
Next lCol
End If
End If
Next ws
Next lRow
End Sub