質問: excelで別ブックに内容を転記する方法 excelで別ブックに内容を転記する方法を教えていただきたいです。 あるワークブック(転記先・画像上)上にデータの一覧表を作成したいと考えています。 その一覧表には項目が複数ありますが、全てではなく一部の項目のみ、 別のワークブック(転記元・画像下)から内容をコピーした上で、 自動的に転記先の表の最下行に追加できるようにしたいと考えています。 転記元のワークブックは複数ありどの列にどの項目の内容が書いてあるか、は変わりませんが、 何行分の項目が入力されているか、は一定ではありません。 項目1の記入があれば同じ行の他の項目も全て記入されています。 ただし転記先に必要のない項目(画像のxyzなど)もあり、 表と項目の並びも転記先と転記元で異なっています。 マクロを用れば可能かと思い自分なりに調べては見たところ、 activesheetの指定した列の1行目~最下行を選択 thissheetの指定した列の最下行に張り付け という流れを必要な項目分だけ繰り返せばいいのかと思いましたが、 実際にどのように式を組み合わせていけばいいのかが分かりませんでした。 説明も稚拙で分かりづらいかと思いますが、 ご回答いただけましたら幸いです。宜しくお願いいたします。
回答: 全部わからないのでしょうか?? 全部聞くのであれば(楽するので)たぶん覚えずに終わるでしょう。 なるべく聞く部分をもっと絞り込むといいと思いますよ。 1.元先判定しマッチするものをコピー 2.ループの書き方 3.範囲指定方法 4.その他(book指定方法とか?) 2のループだけ書こうと思いましたが全部書いてしまいました。 ・マッチングではコピー先桁数で判定(項目1と項目10などがあると不具合) ・すでに開いているブックを処理 ・sheet1固定 ・マクロはコピー先に記載(後から開いた2番目以降のブックをコピー元と判定) ・見やすくする為頭に全角スペースがあります sub test() for i = 2 to workbooks.count set wk = workbooks(i).worksheets("sheet1") srow = 1 scol = 1 do until cells(srow, scol) = "" mrow = 1 mcol = 1 do until wk.cells(mrow, mcol) = "" slen = len(cells(srow, scol)) if left(cells(srow, scol), slen) = left(wk.cells(mrow, mcol), slen) then merow = wk.cells(mrow, mcol).end(xldown).row serow = cells(65536, scol).end(xlup).row + 1 range(cells(serow, scol), cells(serow + merow - 1, scol)).value = _ wk.range(wk.cells(mrow, mcol), wk.cells(merow, mcol)).value exit do end if mcol = mcol + 1 loop scol = scol + 1 loop next i end sub