[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAで転記する方法』(やま)
【元データ】
A列 B列 C列
001 あ か
002 い き
003 う く
004 え け
とある場合、
【転記先】
D列 E列
001 あ
001 か
002 い
002 き
003 う
003 く
004 え
004 け
とするにはどのようなVBAを書いたらよいでしょうか?
元データは下にずっと続いていきます
Sub 転記()
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
n = Cells(1, 4).End(xlDown).Row
Cells(n, 4) = Cells(i, "A") Cells(n, 5) = Cells(i, "B")
Next i
End Sub
と書いてみましたが
1048576行目のD列E列に
4 え
と入力されるだけでした
どこが間違っているでしょうか?
どのように書いたらよいのか教えて下さい
< 使用 Excel:Excel2016、使用 OS:Windows10 >
Sub test()
Dim i As Long
Dim n As Long
n = Cells(Rows.Count, "D").End(xlUp).Row
If Cells(n, "D").Value = "" Then
n = n - 1
End If
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
n = n + 1
Cells(n, "D").Value = Cells(i, "A").Value
Cells(n, "E").Value = Cells(i, "B").Value
n = n + 1
Cells(n, "D").Value = Cells(i, "A").Value
Cells(n, "E").Value = Cells(i, "C").Value
Next i
End Sub
(???) 2020/07/13(月) 18:07
後からで恐縮なのですが
A列 B列 C列
001 あ か
002 い
003
004 え け
上記のように歯抜けになっているところもありました
この場合、A列から見ていき、BやCが空欄だとそれは転記しない場合
If Cells(i, "B").Value <>= "" Then
Cells(n, "D").Value = Cells(i, "B").Value
Else
End If
と各転記処理の間に追加していくだけで大丈夫でしょうか?
(やま) 2020/07/13(月) 18:34
>〜だけで大丈夫でしょうか?
それはご自身で確認すべきことだとおもいますよ。
ちゃんと動けば不正解ではないとおもいます。
ただ、提示されたものだと意味がない「Else」が気になります。
(害にはならないでしょうが)
また、提示のとおりであれば、A列が連番になっていますから、
(1) A、B列をコピーして、D列に貼付 (2) A、C列をコピーして、D列最終行の下に貼付 (3) D〜E列をD列をキーにして、昇順で並び替え
というアプローチも有効だとおもいます。
こちらだと、ループ処理が不要な上に、マクロの記録でベースとなるコードを得ることが可能です。
(もこな2 ) 2020/07/13(月) 20:05
Sub test()
Dim i As Long
Dim n As Long
Dim m As Long
n = 1
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
For m = 2 To 3
If Cells(i, m).Value <> "" Then
Cells(n, 4).Value = Cells(i, 1).Value
Cells(n, 5).Value = Cells(i, m).Value
n = n + 1
End If
Next m
Next i
End Sub
A列の表示が001となっているのが書式設定された数値なのか文字列なのか気になるところですが、 その辺はあらかじめシートの書式設定で解消されているものと思いますので。
(tora) 2020/07/14(火) 09:02
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.