
エクセルVBAに関してのご質問です。
一つのbookにア、イの2sheetがあるとします。
sheetアのA1セル~A4セルに①関東、関西、東北、九州などが記入され、B1セル~B4セルに②50、15、0、8などの数値が記入されます。
sheetイのZ1、Z3、Z5、Z7セル、、、、のような同列の一行飛ばしのセルに、①の文字を②の回数分、順番に表示させるにはどのように表現すればよろしいでしょうか。上記の例でいえば、まず関東をZ1、Z3、Z5、、、に50回入力し、その続きのセルに関西を15回入力していくイメージです。
No.2ベストアンサー
- 回答日時:
こんにちは!
Sub Sample2()
Dim i As Long, k As Long, cnt As Long
Dim wS As Worksheet
Set wS = Worksheets("ア")
With Worksheets("イ")
.Range("Z:Z").ClearContents
For i = 1 To wS.Cells(Rows.Count, "A").End(xlUp).Row
If wS.Cells(i, "B") > 0 Then
For k = 1 To wS.Cells(i, "B")
cnt = cnt + 1
.Cells(cnt * 2 - 1, "Z") = wS.Cells(i, "A")
Next k
End If
Next i
End With
End Sub
こんな感じですかね。m(_ _)m
No.4
- 回答日時:
>例えば、sheetアの(A1~A5及びB1~B5には他の不必要な値が入っているので飛ばして)A6~A9、B6~B9を参照する場合です。
6行目~9行目というのは固定ですかね?
No.2のコード内の
>For i = 1 To wS.Cells(Rows.Count, "A").End(xlUp).Row
の部分が「1行目~A列のデータが入っている最終行まで」というループになりますので、
ココを6~9に変更すれば大丈夫です。
>For i = 6 To 9
とするだけです。m(_ _)m
No.3
- 回答日時:
No.2です。
>Z1ではなくZ7など列の途中から・・・
単に行合わせだけの問題になります。
OFFSETを使っても良いですが、前回のコードをそのまま利用すると
>.Cells(cnt * 2 - 1, "Z") = wS.Cells(i, "A")
を
>.Cells(cnt * 2 - 1 + 6, "Z") = wS.Cells(i, "A")
に変えるだけ、すなわち
>.Cells(cnt * 2 + 5, "Z") = wS.Cells(i, "A")
にするだけです。
※ 一旦Z列のデータを消去するようにしていますが、
消去不要なら
>.Range("Z:Z").ClearContents
を消してください。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで指定した日付から過去の...
-
ExcelVBAを使って、値...
-
Application.Matchで特定行の検索
-
ExcelのVBAで数字と文字列をマ...
-
DataGridViewのセル編集完了後...
-
Excel vbaで特定の文字以外が入...
-
ExcelVBA:オートフィルタをかけ...
-
VBAでセル同士を比較して色付け
-
エクセルvbaで、別シートの最下...
-
【Excel】指定したセルの名前で...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定のセルが空白だったら、そ...
-
DataGridViewの各セル幅を自由...
-
VBA実行後に元のセルに戻りたい
-
3桁または4桁の数値を時刻に...
-
VBAでセルをクリックする回...
-
セルに貼り付けた画像の上から...
-
VBからEXCELのセルの値を取得す...
-
エクセルVBAで結合セルの真ん中...
-
Excel VBA マクロ ある列の最終...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
特定行の色を変えたい(FlexGrid)
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
VBA実行後に元のセルに戻りたい
-
Application.Matchで特定行の検索
-
”戻り値”が変化したときに、マ...
-
VBAでセルをクリックする回...
-
任意フォルダから画像をすべて...
-
Excel VBAで、 ヘッダーへのセ...
-
TODAY()で設定したセルの日付...
-
【Excel VBA】指定行以降をクリ...
-
Excel vbaで特定の文字以外が入...
-
ExcelのVBAで数字と文字列をマ...
-
Excel VBA、 別ブックの最終行...
-
DataGridViewの各セル幅を自由...
-
VBA ユーザーフォーム ボタンク...
-
連続する複数のセル値がすべて0...
おすすめ情報
迅速なご回答ありがとうございます。直ぐのご回答に驚きました。
追加でご質問なのですが、シートイのZ列への表示の際、Z1ではなくZ7など列の途中から表示を開始する場合は、コードをどのように修正すればよろしいでしょうか。
ありがとうございます。前よりコードの内容が理解できてきました。
三度のご質問で恐縮ですが、参照するsheetアのA1~A4、B1セル~B4セルのそれぞれについても列の途中からの場合の指定方法についてご教示いただけませんでしょうか。
例えば、sheetアの(A1~A5及びB1~B5には他の不必要な値が入っているので飛ばして)A6~A9、B6~B9を参照する場合です。