質問: エクセルのマクロで転記 シート1とシート2があり、 シート1の20aから39lまでのセルの中に情報を書き込んでいます。 シート1の20lから39lのl行で、数値が入っているセルがあれば、その行のa、b、i、l列と、j2、a7を取り出し、シート2の2行目から下に転記していくのですが、 シート2のa列にはシート1のj2を、b列にはシート1のa7を、c列以降は、シート1のa、b、i、lを入れるようにします。 また同じ条件がシート1で発生すれば、シート2の3行目以降に転記していく感じです。 どのようにすればいいでしょうか。
回答: 無意味に難しくしなくても、丁寧に転記していくだけの単純作業です。 sub macro1() dim i as long dim r as long r = 1 for i = 20 to 39 if cells(i, "l") <> "" and isnumeric(cells(i, "l").value) then r = r + 1 worksheets("sheet2").cells(r, "a") = worksheets("sheet1").range("j2") worksheets("sheet2").cells(r, "b") = worksheets("sheet1").raneg("a7") worksheets("sheet2").cells(r, "c") = worksheets("sheet1").cells(i, "a") worksheets("sheet2").cells(r, "d") = worksheets("sheet1").cells(i, "b") worksheets("sheet2").cells(r, "e") = worksheets("sheet1").cells(i, "i") worksheets("sheet2").cells(r, "f") = worksheets("sheet1").cells(i, "l") end if next i end sub みたいな。 #l列に数式を記入しているのか生数字を記入しているのかなどによっても工夫代がありますが、まぁこの程度の行数なら一行ずつ舐めていっても大したことありません。