- ベストアンサー
Excel VBAで…。
データーシート(1)のデータをレイアウトシート(2)に転記するのに 例えば sheets(1).range("A1").value=sheets(2).range("C5").value sheets(1).range("B1").value=sheets(2).range("C6").value sheets(1).range("C1").value=sheets(2).range("C7").value と言うように配置しているのですが もし、シート(1)セルB1の値が空白ならば シート(1)セルC1の値はシート(2)のセルC6に配置・・・ と言うように データがない場合は、転記後の配置は詰めて配置したいのです。 どうすればよろしいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 > データーシート(1)のデータをレイアウトシート(2)に転記するのに >sheets(1).range("A1").value=sheets(2).range("C5").value それなら、右辺と左辺が逆ではありませんか? Sub TestSample1() Dim c As Range Dim i As Integer With Worksheets("Sheet1") For Each c In Range(.Cells(1, 1), .Cells(1, 256).End(xlToLeft)) If c.Value <> "" Then Worksheets("Sheet2").Range("C5").Offset(i).Value = c.Value i = i + 1 End If Next c End With End Sub
その他の回答 (2)
- hana-hana3
- ベストアンサー率31% (4940/15541)
これでいかがでしょうか? Sub test1() Dim DATA As Variant Dim C As Range Dim count As Integer Set DATA = Sheets(1).Range("A1:C1") count = 5 For Each C In DATA If C.Value <> "" Then Sheets(2).Cells(count, 3) = C.Value count = count + 1 End If Next End Sub
お礼
素早いご回答ありがとうございました。 質問の説明が不十分でしたが、 シート(1)のデータの行数は固定ではないので No.1さんに教えて頂いた方法でやることにしました。 hana-hana3さんに教えて頂いた方法でも、アレンジすればできるのでしょうけど、横着をしてしまいました。 1つの結果に到達するのにも色んな方法があるんでねー。 勉強になりました。 ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
サンプル(Sheet2!C5:C20の内容をSheet1!A1:T1に転記) Sub SetCell() Dim X, I As Integer For I = 5 To 20 If Sheets("Sheet2").Cells(I, 3) = "" Then GoTo NextNo X = X + 1 Sheets("Sheet1").Cells(1, X) = Sheets("Sheet2").Cells(I, 3) NextNo: Next I End Sub
お礼
素早いご回答ありがとうございました。 質問の説明が不十分でしたが、 シート(1)のデータの行数は固定ではないので No.1さんに教えて頂いた方法でやることにしました。 mshr1962さんに教えて頂いた方法でも、アレンジすればできるのでしょうけど、横着をしてしまいました。 1つの結果に到達するのにも色んな方法があるんでねー。 勉強になりました。 ありがとうございました。
お礼
Wendy02さん、いつもいつも迅速かつ的確なご回答、本当にありがとうございます! ほんとですね、右辺と左辺が逆 (>_<) 急いでたので…(完全な言い訳) 教えて頂いた内容で、完璧にできました! Wendy02さんからしてみたら 「こんなこと、どぉーしてわからないのぉ???」ってレベルのことなんでしょうかねー? 右も左もわからない私にとっては、本当に頼りにさせて頂いております。 もしよろしければ、今後共宜しく面倒見てやって下さいませ!