こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

シート間の参照について

EXCELを使用しています。
Sheet1のA1から下の行に、sheet2のA1から下のセルに文字列が入力されていたら入力されているセルの内容を行ごとに表示しセルが空欄になったらsheet3のA1から下のセルに文字列が入力されていたらその内容をsheet1にsheet2の文字列の続きに表示させるにはどうしたらいいのでしょうか?

投稿日時 - 2019-04-19 21:34:04

QNo.9608484

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

こちらの方が良いかな
=IF(Sheet2!A1<>"",Sheet2!A1,OFFSET(Sheet3!A1,-COUNTA(Sheet2!A:A),))

投稿日時 - 2019-04-21 22:21:27

ANo.3

Sheet1のA1セル=IF(Sheet2!A1<>"",Sheet2!A1,INDIRECT("Sheet3!A"&ROW()-COUNTA(Sheet2!A:A)))
入力して下にコピーしてください。
A7セルからはデータが無いので0の表示になりますので
A列を選択して[書式] ⇒ [セルの書式設定] ⇒ [ユーザー定義]
[種類] ボックスに「0;;;@」と入力して、[OK] をクリックします。
これで0は非表示になります。

投稿日時 - 2019-04-21 14:24:14

ANo.2

参考に
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

投稿日時 - 2019-04-20 08:45:17

補足

VBA等を使用しないで関数のみで処理することは可能ですか?

投稿日時 - 2019-04-21 13:11:22

ANo.1

シートタブ的に対象シートを隣り合わせに(手動で)ならべておく。
集約シーはその範囲から外しておく。
例えば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など
で指定する方法があるのを、勉強しましたか?
よく出る質問で、あまり興が乗らない課題。

投稿日時 - 2019-04-19 22:54:30

あなたにオススメの質問