質問: vba 数(可変)分だけ順に記号を並べる方法 エクセルvbaを勉強し始めたばかりの超初心者です。 以下のような表を作成したいのですが、良い方法が思いつきません。 どうか御教授の程お願いいたします。 ●記号(a~eとして)の数(可変)分だけ列の上から順にその記号を入力する。 例えばa:1,b:0,c:3,d:5,e:2ずつある場合、列cに縦に"acccdddddee" という感じです。 表現が分かりづらいかもしれませんが宜しくお願いします。
回答: [イミディエイト] ? cutstr("a:1,b:0,c:3,d:5,e:2", ",", 1) a:1 ? cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 1), ":", 1) a ? cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 1), ":", 2) 1 ? string(cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 1), ":", 2), cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 1), ":", 1)) a ? string(cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 2), ":", 2), cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 2), ":", 1)) ? string(cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 3), ":", 2), cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 3), ":", 1)) ccc ? string(cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 4), ":", 2), cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 4), ":", 1)) ddddd ? string(cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 5), ":", 2), cutstr(cutstr("a:1,b:0,c:3,d:5,e:2", ",", 5), ":", 1)) ee このテストで判るように区切り子で区切られた文字列を分割して取り出す関数 cutstr() の類を自作すれば簡単に。 なお、cutstr()では split を利用しています。