[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロで繰り返しを行いたい』(むらい)
初めて質問させていただきます。
A列 |B列
りんご|1
みかん|3
いちご|5
とエクセルに入力し、ボタンを押すと
D列
りんご
みかん
みかん
みかん
いちご
いちご
いちご
いちご
というようにA列で指定した言葉をB列に入力した回数繰り返し出力する方法が分からず質問させていただきました。
よろしくお願いいたします。
< 使用 Excel:Office365、使用 OS:Windows10 >
(マナ) 2019/03/10(日) 15:47
Option Explicit
Sub test() Dim k As Long Dim n As Long
n = 1 For k = 1 To Cells(Rows.Count, "A").End(xlUp).Row Cells(k, "A").Copy Cells(n, "D") n = n + 1 Next
End Sub
Sub test2() Dim k As Long Dim n As Long
n = 1 For k = 1 To Cells(Rows.Count, "A").End(xlUp).Row Cells(k, "A").Copy Cells(n, "D").Resize(2) n = n + 2 Next
End Sub
(マナ) 2019/03/10(日) 16:51
ありがとうございます。
上記とは少し異なる条件ですが、
「あああ」シートA列にフルーツ名を入れ、F列に個数を記入し、
「いいい」シートC列にフルーツ名を入れるというのを下記のようなマクロを作ったのですが、
For i = 1 To wS1.Range("F2")と書いているため、F2の数値しか拾ってこれていません。
Sub 受講講座選択画面ID追加()
Dim i As Long, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("あああ") Set wS2 = Worksheets("いいい")
'フルーツを入れる For i = 1 To wS1.Range("F8") For j = 8 To wS1.Cells(Rows.Count, "A").End(xlUp).Row wS2.Cells(Rows.Count, "C").End(xlUp).Offset(1) = wS1.Cells(j, "A") Next j Next i End Sub
F8に「2」を入れた場合、
りんご
みかん
りんご
みかん
という出力結果になってしまっています。
上記のようではなく、
りんご|1
を処理したあとに
みかん|3
を処理する。
というように書き換える方法を考えているのですが、うまく考えられないため、アドバイスをいただければと思い書き込みしました。
よろしくお願いいたします。
(むらい) 2019/03/10(日) 17:00
値を入れる範囲を広げるには、Resizeプロパティを利用できます。
(マナ) 2019/03/10(日) 17:10
Sub test3() Dim k As Long
For k = 1 To Cells(Rows.Count, "A").End(xlUp).Row Cells(k, "A").Copy Cells(Rows.Count, "D").End(xlUp).Offset(1).Resize(2) Next
End Sub
Resize(2) が個数です。
(マナ) 2019/03/10(日) 17:41
ありがとうございます。
下記のようなマクロで実行できました!
For i = 8 To wS1.Cells(Rows.Count, "A").End(xlUp).Row For j = 1 To wS1.Cells(i, "F").Value wS1.Cells(i, "A").Copy wS2.Cells(Rows.Count, "C").End(xlUp).Offset(1) Next j Next i
1点質問ですが、
値を入れる範囲を広げるには、Resizeプロパティを利用できます。
こちらがいまいちわかっておりません。
サイズ変更した後のセル範囲を返しますということは分かるのですが、どう利用するかが思いつきません。
お教えいただければ幸いです。
よろしくお願いいたします。
(むらい) 2019/03/10(日) 17:49
1)A1をコピー
2)D1:D3を選択して貼り付け
で、同じ値を一回でペーストしませんか。
マクロでも同じです。
range("A1").copy range("D1:D3")
これで、3セルに1回でコピペできます。
この、
range("D1:D3")
を。Resizeを使うと
Range("D1"),Resize(3)
このようになります。
>For j = 1 To wS1.Cells(i, "F").Value
Resizeを使えば、ループが不要になると言うことです。
(マナ) 2019/03/10(日) 19:30
何度もありがとうございます。
なるほど、そういうことなんですね。
理解ができました。
お陰様でスッキリした状態でこちら解決できました。
本当にありがとうございました。
(むらい) 2019/03/10(日) 19:37
Sub test4() Dim k As Long For k = 1 To Cells(Rows.Count, "A").End(xlUp).Row ells(Rows.Count, "A").End(xlUp).Row Cells(Rows.Count, "D").End(xlUp).Offset(1).Resize(2).Value = Cells(k, "A").Value Next
End Sub
(マナ) 2019/03/10(日) 20:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.