
複数のワークシートを含む 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 やその他の項目が最上部と最右側にあることを確認してください。そうすることで、シートは増えても統合データには影響しません。