
我有一個包含多個工作表的 Excel 工作簿。它們都有相同的列名。然而,行數因工作表而異。我想建立一個概述表,可以在其中查看每張表中的所有資料。我可以進入每張紙,只需將資料從第二行複製並貼上到最後一行,並在每張紙中添加資料。但我認為有更簡單的方法可以做到這一點嗎?
感謝您的幫忙!
答案1
這是使用VBA的解決方案:
Public Sub overview()
resultsheet = "Overview"
Dim wkb As Workbook
Dim wks, wks1 As Worksheet
Set wkb = ThisWorkbook
On Error GoTo SheetError:
Set wks1 = wkb.Sheets(resultsheet)
destrow = 1
totalcolumn = 1
totalwks = wkb.Sheets.Count
For i = 1 To totalwks
Set wks = wkb.Sheets(i) 'Iterate over all sheets
wksname = wks.Name
If wksname <> resultsheet Then 'Exclude the overview sheet
rowdata = True
columndata = True
thisrow = 2
thiscolumn = 1
totalempty = 0
While rowdata = True
If i = 1 Then 'First sheet section
a = wks.Cells(thisrow - 1, thiscolumn)
If a <> "" Then
wks1.Cells(destrow, thiscolumn) = a
thiscolumn = thiscolumn + 1
Else
If thisrow = 2 Then
totalcolumn = thiscolumn
End If
totalempty = totalempty + 1
If totalempty = totalcolumn Then
rowdata = False
End If
If thiscolumn = totalcolumn Then
thisrow = thisrow + 1
thiscolumn = 1
destrow = destrow + 1
totalempty = 0
End If
End If
Else ' Any other Sheet section
a = wks.Cells(thisrow, thiscolumn)
If a <> "" Then
rowdata = True
wks1.Cells(destrow, thiscolumn) = a
thiscolumn = thiscolumn + 1
Else
totalempty = totalempty + 1
If totalempty = totalcolumn Then
rowdata = False
End If
If thiscolumn = totalcolumn Then
thisrow = thisrow + 1
thiscolumn = 1
destrow = destrow + 1
totalempty = 0
End If
End If
End If
Wend
End If
Next i
Exit Sub
SheetError:
If Err.Number = 9 Then
createwks = MsgBox("Worksheet " & resultsheet & " doesn't exist" & vbCrLf & "Do you want to create it?", vbYesNo, Error)
End If
If createwks = 6 Then
Set wks1 = wkb.Worksheets.Add(After:=Worksheets(Worksheets.Count))
wks1.Name = resultsheet
Resume
End If
End Sub
您必須開啟巨集/VBA本練習冊插入一個模組並將此程式碼貼到右側,然後執行此程式碼並檢查名為的工作表上的內容概述當它結束時。
答案2
我會手動完成:)
你可以看一下這個解決方案(按位置合併資料),您會看到類似的開銷:
在包含要合併的資料的每個工作表中,透過執行下列操作來設定資料:
確保每個資料範圍都採用列表格式:每列在第一行都有一個標籤並包含相似的事實,並且列表中沒有空白行或列。
將每個範圍放在單獨的工作表上,但不要將任何範圍放在計劃進行合併的工作表上。
確保每個範圍具有相同的佈局。
在主工作表中,按一下要顯示合併資料的區域的左上角儲存格。
備註 為避免使用要合併的資料覆寫目標工作表中的現有數據,請確保在此儲存格的右側和下方留有足夠的儲存格用於合併資料。
……還有那麼久…
答案3
我認為這樣做沒有任何好處。我不知道你要做什麼,但如果你把資料分成幾張紙,你一定有這樣做的理由。如果有理由,為什麼還要在一起?對我來說完全是無稽之談。好吧,我要做的是,為什麼我首先需要一起看到呢?它只是讓你很難找到任何東西,等等,是的,只有當你想使用編輯功能來定位其上的特定數據時。但是,你必須這樣做很多次嗎?如果有任何相關的內容,我會在每個工作表中製作一個SUM 或其他簡歷,並在新工作表中為每個單獨的電子表格上的該字段進行交叉引用。整個數據只到一張紙。如果您是一名優秀的程式設計師,複製它的第一個解決方案可能會有所幫助,但您會發現它並不那麼簡單。最後但並非最不重要的一點是,如果每個工作表的行數增長,請確保 SUM 或其他任何內容位於最頂部和最右側,以便工作表增長但合併數據不會受到影響。