Excel で同じ列だが行数が異なる複数のワークシートのデータを統合する

Excel で同じ列だが行数が異なる複数のワークシートのデータを統合する

複数のワークシートを含む Excel ブックがあります。すべての列名は同じです。ただし、行数はシートごとに異なります。すべてのシートのデータをすべて確認できる概要シートを作成したいと考えています。すべてのシートにアクセスして、2 行目から最後の行までデータをコピーして貼り付けるだけで、すべてのシートにデータが表示されます。しかし、もっと簡単な方法があると思いますか?

ご協力いただきありがとうございます!

答え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またはその他の履歴書を作成し、新しいシートで、各分割されたスプレッドシートのそのフィールドの相互参照を作成します。データを統合するため、データ全体を1つのシートにコピーする必要はありません。優れたプログラマーであれば、コピーするための最初の解決策が役立つかもしれませんが、それほど簡単ではないことがわかります。最後に、各シートの行番号が増える場合は、SUM やその他の項目が最上部と最右側にあることを確認してください。そうすることで、シートは増えても統合データには影響しません。

関連情報