質問: エクセルマクロでのコピー貼り付けについて マクロ初心者です。手作業に限界を感じマクロを勉強しましたが力不足です。 質問ではなく申し訳ございませんがよろしくお願いします。 コピーして貼り付けるだけのことなのですが、 以下が元のデータです。 認識コード 名称 日付 00000229 a 2012/2/21 00000229 a 2010/10/5 00000470 b 2012/3/30 00000470 b 2011/3/31 00000496 c 2011/7/5 00000496 c 2010/8/17 00000496 c 空白 変更後の形です。 認識コード 名称 日付 00000229 a 2012/2/21 2010/10/5 00000470 b 2012/3/30 2011/3/31 00000496 c 2011/7/5 2010/8/17 空白 元データにある認識コードが同じ項目の日付を横に並べていきたいですのですが 繰り返しを含め空白欄のコピーもうまくできません。 厚かましいこと極まりないですが、ご指導していただければと思います。
回答: no.2です! 日付が表示されない!というコトですが・・・ おそらくsheet1のa列が文字列になっているのでは? 前回のコードはsheet1のa列は数値で表示形式が8桁となっている前提のコードでしたので sheet2のa列も数値を8桁表示としていました。 そうなると当然sheet2のa・b列と一致するものはsheet1にはないので 日付部分は全く表示されないと思います。 もう一度コードを載せてみます。(ほとんど前回同様です) 今回はsheet1のa列が文字列だとしてのコードです。 sub test() 'この行から dim i, k as long dim myarray as variant dim ws as worksheet set ws = worksheets("sheet2") '←「sheet2」は実際のsheet名に! application.screenupdating = false i = ws.cells(rows.count, 1).end(xlup).row if i > 1 then ws.rows(2 & ":" & i).clearcontents end if ws.columns(1).numberformatlocal = "@" 'この行を追加 for i = 2 to cells(rows.count, 1).end(xlup).row ws.cells(rows.count, 1).end(xlup).offset(1) = _ cells(i, 1) & "_" & cells(i, 2) next i for i = ws.cells(rows.count, 1).end(xlup).row to 2 step -1 if worksheetfunction.countif(ws.columns(1), ws.cells(i, 1)) > 1 then ws.cells(i, 1).delete (xlup) end if next i for i = 2 to ws.cells(rows.count, 1).end(xlup).row myarray = split(ws.cells(i, 1), "_") for k = 0 to 1 ws.cells(i, k + 1) = myarray(k) next k next i '前回のここの行を削除 for k = 2 to ws.cells(rows.count, 1).end(xlup).row for i = 2 to cells(rows.count, 1).end(xlup).row if cells(i, 1) = ws.cells(k, 1) and cells(i, 2) = ws.cells(k, 2) then if cells(i, 3) <> "" then with ws.cells(k, columns.count).end(xltoleft).offset(, 1) .value = cells(i, 3) .numberformatlocal = "yyyy/m/d" end with else ws.cells(k, columns.count).end(xltoleft).offset(, 1) = " " end if end if next i next k application.screenupdating = true end sub 'この行まで ※ 今回は上手く動けば良いのですが・・・m(_ _)m