- 締切済み
シート間の参照について
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- watabe007
- ベストアンサー率62% (476/760)
こちらの方が良いかな =IF(Sheet2!A1<>"",Sheet2!A1,OFFSET(Sheet3!A1,-COUNTA(Sheet2!A:A),))
- watabe007
- ベストアンサー率62% (476/760)
Sheet1のA1セル=IF(Sheet2!A1<>"",Sheet2!A1,INDIRECT("Sheet3!A"&ROW()-COUNTA(Sheet2!A:A))) 入力して下にコピーしてください。 A7セルからはデータが無いので0の表示になりますので A列を選択して[書式] ⇒ [セルの書式設定] ⇒ [ユーザー定義] [種類] ボックスに「0;;;@」と入力して、[OK] をクリックします。 これで0は非表示になります。
- watabe007
- ベストアンサー率62% (476/760)
参考に Sub Test() Dim ws As Worksheet, LastRow As Long With Worksheets("Sheet1") For Each ws In Worksheets(Array("Sheet2", "Sheet3")) LastRow = Cells(Rows.Count, "A").End(xlUp).Row If .Cells(LastRow, "A").Value <> "" Then LastRow = LastRow + 1 If ws.Range("A1").Value <> "" Then ws.Range("A1", ws.Cells(Rows.Count, "A").End(xlUp)).Copy .Cells(LastRow, "A") End If Next End With End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
シートタブ的に対象シートを隣り合わせに(手動で)ならべておく。 集約シーはその範囲から外しておく。 例えば2から3までなら(2,3はシートのインデックス番号) 標準モジュールに Sub test01() j = 2 '第1行目はに出し For i = 2 To 3 lr = Worksheets(i).Range("A100000").End(xlUp).Row ’第1行目はに出し、と仮定 ->A2 Worksheets(i).Range("A2:D" & lr).Copy Worksheets("集約").Range("A" & j) j = j + (lr - 1) Next i End Sub ーー ForEachを使う手もある。 シートの指定は (1)上記はインデックス番号指定 (2)名前 (3)Nextなど で指定する方法があるのを、勉強しましたか? よく出る質問で、あまり興が乗らない課題。
補足
VBA等を使用しないで関数のみで処理することは可能ですか?