質問: マクロ、セルの値から行挿入して転記する方法 エクセル2013です。 セルa1に 1,8,9,15 セルa2に 7,12 セルa3に 20,14,28 と入力されているとします。 for~nextで回して セルa1のカンマの数を instr関数で数えて カンマが3個だから その3を変数に入れて それを利用して a2から3行行挿入します。 で カンマで区切られた順に a1には1 a2には8 a3には9 a4には15 と転記させる カンマは消してしまう で、この時点で 元々セルa2だった所は セルa5になっていて 7,12 が入力されているはずです。 で同じくそこを見させて カンマが1個だから a5の下に1行挿入したうえで a5に7 a6に12 と転記 カンマは消す。 すると元々セルa3だった所は セルa7になっていて そこには20,14,28が入力されているはず ここも同じように処理し 下の列へ進めて行く。 カンマが無いセルは 行挿入せず この処理はしないで a列のデータが有る最終行まで 繰り返す。 と いうマクロを作成したいのですが どういう方法で行えばいいか うまく思いつきません。 配列は苦手でなのですが 配列を使わないと無理でしょうか? どうかよろしくお願いします。
回答: 解決しているかどうかよくわからないので追記しておきます。 補足にある手順通りで、上から下に向かって処理しています。 sub insertrow3() dim rw as long '// 全体の行カウンタ dim rwwk as long '// 挿入する行数 dim rwins as long '// 挿入する行カウンタ dim rwdt as string '// カンマを含んだ値 dim kpot as integer '// カンマの位置 rw = 0 with activesheet.range("a1") while .offset(rw, 0) <> "" '// カンマの数を計算 rwdt = .offset(rw, 5).value '// f列 rwwk = len(rwdt) - len(application.substitute(rwdt, ",", "")) '// 必要行数を挿入 range("a" & rw + 2, "f" & rw + rwwk + 1). _ insert shift:=xldown, copyorigin:=xlformatfromleftorabove '// コピー range("a" & rw + 1 & ":f" & rw + 1).copy _ range("a" & rw + 2 & ":a" & rw + rwwk + 1) '// 各数字を書き込む rwdt = rwdt & "," for rwins = 1 to rwwk + 1 kpot = instr(rwdt, ",") range("f" & rw + rwins) = left(rwdt, kpot - 1) rwdt = right(rwdt, len(rwdt) - kpot) '// 不要な数字をカット next '// 行数を更新 rw = rw + rwwk + 1 wend end with end sub