
エクセルVBAの初心者です。例えば『A列』の1行目のセルに10、2行目のセルに20、3行目のセルに30という様に新規で数値を入力した後にマクロを実行するとその値をコピーしその行の右方向の列で最初の空白セルにその値を貼り付けたいのですが、どのようにプログラムを組めば良いのか分かりません。詳しい方、お手数をお掛けしますが教えて下さい。
A列 B列 C列 D列 E列 F列
10 15 30 ★
20 25 55 60 80 ★
30 30 40 20 ★
40 10 20 50 40 ★
50 20 30 ★
★印の空白セルにその行のA列の数値が貼り付けられる様にお願いします。
尚、行数は5000行程あります。
No.4ベストアンサー
- 回答日時:
No2です。
効率は悪いけれど、単純な記述でよければ・・
Sub Sample2()
Dim rw As Long, c As Range
For rw = 5 To 2000
For Each c In Cells(rw, 9).Resize(, 11)
If c.Value = "" Then c.Value = Cells(rw, 3).Value: Exit For
Next c
Next rw
End Sub
処理効率を上げる方法は、ご自身で考えてみてください。
fujillin様
この度は色々と親切に教えて頂き誠にありがとうございました。
教えて頂いた方法でやりたい事が出来ました。
助かりました。お手数をお掛けしました。
No.3
- 回答日時:
>行数は5000行程あります。
>①新規登録の数値は『A列』ではなく、『C5』~『C2000』に入力しています。
行数が5000行ほどあるなら、
『C5』~『C2000』ではなくm『C5』~『C5000』
になりませんか。
どちらが正しいのでしょうか。
No.2
- 回答日時:
No1です。
ご質問文の内容と補足の内容は全く異なるものです。
とは言え、大雑把な考え方はNo1に示したような方法でできると思いますので、補足にご提示の①~④の条件をそのまま記述すればできると思います。
論理的に考えることはできているようですので、後はそれをコード化するだけです。
「マクロの記録」やMSDNのドキュメントを利用して、頑張ってみてください。
https://learn.microsoft.com/ja-jp/office/vba/api …
No.1
- 回答日時:
こんにちは
一例です。
Sub Sample()
Dim c As Range
For Each c In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
If c.Value <> "" Then
If c.Offset(, 1).Value = "" Then
c.Offset(, 1).Value = c.Value
Else
c.End(xlToRight).Offset(, 1).Value = c.Value
End If
End If
Next c
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
1つの入力フォルダの値を読み込み、3分割をして新しい変数に代入する方法を教えていただきたいです。 読
Visual Basic(VBA)
-
該当セルの値を別ブックのシート名と一緒であればコピーしてほしい
Visual Basic(VBA)
-
※初心者です マクロVBAについて
Visual Basic(VBA)
-
4
Excel VBAでAA(BBB) → BBB.AA に置換したい
Visual Basic(VBA)
-
5
VBAの計算について
Visual Basic(VBA)
-
6
Excel VBA マクロ ホルダー内にある複数のファイルを規則に従い格納をしたいです
Visual Basic(VBA)
-
7
VBA言語プログラミング
Visual Basic(VBA)
-
8
エクセルでのマクロを使ったデータの並べ替え
Excel(エクセル)
-
9
Excel マクロで For 文のインデックスを先に宣言する理由
Excel(エクセル)
-
10
VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「"」付にならないよ
Visual Basic(VBA)
-
11
指定文字を太字にするVBAを別シートのセルを指定する構文(改良について)
Visual Basic(VBA)
-
12
【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する
Visual Basic(VBA)
-
13
VBA ComboBoxについて
Visual Basic(VBA)
-
14
ExcelVBA 日付変更
Visual Basic(VBA)
-
15
VBAでのMATCH関数
Visual Basic(VBA)
-
16
VBA For Each 〜 複数条件について
Visual Basic(VBA)
-
17
エクセル -より前の数字を切り出して表示
Excel(エクセル)
-
18
excelにて、ある固定値から連番を振りたいが、上限値が異なる連番を振る処理を複数回行いたい場合
Excel(エクセル)
-
19
エクセルソートと抽出について
その他(Microsoft Office)
-
20
ExcelVBAで、index、match関数を使用して、指定範囲に出力したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
Worksheets メソッドは失敗しま...
-
5
VBマクロ 色の付いたセルを...
-
6
VBA 別ブックからの転記の高速...
-
7
マクロ 最終列をコピーして最終...
-
8
Cellsのかっこの中はどっちが行...
-
9
VBAのFind関数で結合セルを検索...
-
10
VBAで、特定の文字より後を削除...
-
11
期限を超えた日付に警告のメッ...
-
12
targetをA列のセルに限定するに...
-
13
VBAを使って検索したセルをコピ...
-
14
VBAでのリスト不一致抽出について
-
15
オートフィルタをマクロで作成...
-
16
Excel VBA でテキストボックス...
-
17
難問 VBA 今日の日付より前に対...
-
18
エクセルで結合セルがあるため...
-
19
データグリッドビューの一番最...
-
20
エクセル 2つの表の並べ替え
おすすめ情報
公式facebook
公式twitter
申し訳ありません。説明が不十分でした。
簡単に説明しすぎていました。
①新規登録の数値は『A列』ではなく、『C5』~『C2000』に入力しています。
②『C5』~『C2000』の内、数値の入力が無いセルもあります。
③『C5』~『C2000』の数値を『その行のB列』から右方向の最初の空白セルにその値を貼り付けるではなく、『その行のI列~S列』間の最初の空白セルにその値を貼り付けるです。
④『その行のI列~S列』のセルに空白セルが無い時は貼り付けない。
以上、お手数をお掛けして誠に申し訳ありませんが宜しくお願いします。