合併 Excel 中具有相同列但行數不同的多個工作表中的數據

合併 Excel 中具有相同列但行數不同的多個工作表中的數據

我有一個包含多個工作表的 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 或其他任何內容位於最頂部和最右側,以便工作表增長但合併數據不會受到影響。

相關內容