[[20200713172416]] 『VBAで転記する方法』(やま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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.