• ベストアンサー

エクセルでカンマ区切り文字を各行に分解するマクロを書きたい

WindowsXP Excel2003 エクセルで以下ができるマクロを書きたいです。 B列にはカンマ区切りで文字列が入っています。 カンマ区切りの数は行によって様々です。 この表をB列のカンマ区切り文字を各行に分解したいです。 その際、A列とC列は分解前の値と同様です。 このようなマクロは書けますかね? A列     B列     C列 あ     a,b,c    100 い     d,e     200 う     f      300 え     g,h     400     ↓ A列     B列     C列 あ     a      100 あ     b      100 あ     c      100 い     d      200 い     e      200 う     f      300 え     g      400 え     h      400

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

Sub Test()   Dim v As Variant   Dim i As Long, j As Long   For i = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1     v = Split(Cells(i, "B").Value, ",")     If UBound(v) > 0 Then       Rows(i).Offset(1).Resize(UBound(v)).Insert       For j = LBound(v) To UBound(v)         Cells(i + j, "A").Value = Cells(i, "A").Value         Cells(i + j, "B").Value = v(j)         Cells(i + j, "C").Value = Cells(i, "C").Value       Next     End If   Next End Sub

inja025
質問者

お礼

すごい!こちらもできました! 助かりました~ どうもありがとうございました。

その他の回答 (1)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

下記コード。 E列以下を作業列に使っているので、邪魔なら邪魔じゃないところに移動してください。c+3のところ。 Sub test() s0 = "," r = 1 c = 2 str1 = Cells(r, c) While str1 <> "" l = Len(str1) n = 0 For i = 1 To l s1 = Mid(str1, i, 1) If s1 = s0 Then n = n + 1 End If Next If n > 0 Then Cells(r, c).TextToColumns Destination:=Cells(r, c + 3), DataType:=xlDelimited, Comma:=True For i = 1 To n Cells(r + 1, c).EntireRow.Insert Next Range(Cells(r, c + 3), Cells(r, c + 3 + n)).Copy Cells(r, c).PasteSpecial Paste:=xlPasteAll, Transpose:=True Cells(r, 1).AutoFill Destination:=Range(Cells(r, 1), Cells(r + n, 1)) Cells(r, c + 1).AutoFill Destination:=Range(Cells(r, c + 1), Cells(r + n, c + 1)) Range(Cells(r, c + 3), Cells(r + n - 1, c + 3 + n)).ClearContents End If r = r + n + 1 str1 = Cells(r, c) Wend End Sub

inja025
質問者

お礼

できました!助かります。 ありがとうございます!

関連するQ&A

  • [JAVA+CSV]カンマ区切りを分解したい!

    こんばんわぁ♪ カンマ区切りの文字列を分解して新しい変数に格納しなおしたいのです・・・。 たとえば・・・。 MOJIRETSU = "12,13,14,15" という文字列を・・・。 a=12 b=13 c=14 d=15 というように分解して新しい変数に。 どのようなコマンドまたは手段を使えばうまくいきますか??

    • ベストアンサー
    • Java
  • [ASP+CSV]カンマ区切りを分解したい!

    こんばんわぁ♪ カンマ区切りの文字列を分解して新しい変数に格納しなおしたいのです・・・。 たとえば・・・。 MOJIRETSU = "12,13,14,15" という文字列を・・・。 a=12 b=13 c=14 d=15 というように分解して新しい変数に。 どのようなコマンドまたは手段を使えばうまくいきますか??

  • ExcelシートからA,B,C,D,Eといったようにコンマ区切りで 抜き出したい

    ExcelVBAに関するマクロについて教えてください。 A|B|C|D|E|○ -+-+-+-+-+-- F|G|H|I|J|× -+-+-+-+-+-- K|L|M|N|O|○ というExcelがあったときに 1行6列目のように○があれば、 A,B,C,D,Eといったようにコンマ区切りで 抜き出したいですが、マクロの組みかたが 分かりません。 ×のときは、無視し、3行目は○なので 改行した上で再び一行抜きたいです。 親切な方教えてください。 ヒントだけでもかまいません。 よろしくお願いします。

  • エクセル マクロでセルを自動移動

    例1のようになっているエクセル表があります。 データは右方向、下方向へ増えます。 Cの列以降は4つ単位でしかデータは増えません。 それを例2の表のように列A,Bのデータはそのままに Cの列以降の4つのセルを区切りに下の行に移動して、 空白の列まで言ったらA2の行以降を最後の行まで繰り返しするという マクロを書くことは可能でしょうか。 出来ましたらそのマクロを教えてください。 例1 A1 B1 C1 D1 E1 F1 G1 H1 I1 J1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 G3 H3 I3 J3 K3 L3 M3 N3 例2 A1 B1 C1 D1 E1 F1 A1 B1 G1 H1 I1 J1 A1 B1 K1 L1 M1 N1 A2 B2 C2 D2 E2 F2 A2 B2 G2 H2 I2 J2 A3 B3 C3 D3 E3 F3 A3 B3 G3 H3 I3 J3 A3 B3 K3 L3 M3 N3

  • Excel2007のマクロで文字列を分解

    Excel2007のマクロで文字列を分解したいのですがうまくいきません。 1、セルA1からU1までかそれ以上にデータが3つずつ入ってます。 2、1のデータの1つずつをを3列ずつに分解してA3から列上にコピー。 例えば、セルA1あいう、セルB1えおか→ならA3あ、B3い、C3う、D3え、E3お、F3か という具合に。だれかお願いします。

  • vba split関数 コンマ区切り

    エクセルに不慣れなため教えていただけたら幸いです。 A3~A11・B3~B11・C3~C11列にコンマ区切りの数字があります。 列によってはコンマで区切られた数字が3つのものと4つのものが混在しています。 split関数でコンマ区切りの数字を分割してE~H列・J~M列・O~R列に表示したいと考えています。 先ほど別の質問で下記のマクロを教えていただいたのですが、 その際は、A1~A9にあるものをD~G列に表示するというものでした。 よくよく考えると、A列のみではなく、B・C列と複数の列を コンマ区切りしたいと考えています。 このような場合は、どうしたらよいでしょうか。 vba不慣れなためわかりづらかったら申し訳ありません。 お分かりになられるかたがいらっしゃいましたら教えていただけますでしょうか。 よろしくお願いいたします。 Option Explicit ' Sub Macro1()   Dim Rout As Long   Dim Colu As Integer   Dim Expression As Variant '   For Rout = 1 To Cells(Rows.Count, "A").End(xlUp).Row     Expression = Cells(Rout, "A")     Expression = Split(Expression, ",") '     For Colu = 0 To UBound(Expression)       Cells(Rout, Colu + 4) = Expression(Colu)   Next Colu, Rout End Sub

  • Excelでの文字列編集(再質問です)

    Excel2003での再質問です。 今、A列~E列に以下の文字が入っています。 A  B  C  D  E 1あ い う え お  2あ   う 上記の内容を「・」で区切りを入れて、F列に結合させたいのですが  F 1あ・い・う・え・お 2あ・う この質問に対しては、以下のご回答をいただき、解決することが出来ました。 =SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1&B1&C1&D1&E1,A1,A1&" "),B1,B1&" "),C1,C1&" "),D1,D1&" "))," ","・") このたび、3列増やし、A~Hまでの計算式を以下で行ったところ、 =SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1&B1&C1&D1&E1&F1&G1&H1,A1,A1&" "),B1,B1&" "),C1,C1&" "),D1,D1&" "),E1,E1&" "),F1,F1&" "),G1,G1&" "))," ","・") 計算式がエラーとなります。ご教示いただけますでしょうか? よろしくお願いします。

  • excelの文字列の操作について

    A列、C列、E列、G列・・・の1行目にはタイトルが入力されており、 B列、D列、F列、H列・・・には不特定の文字列が入力されており、それぞれ行数も不特定です。 A列、C列、E列、G列・・・の1行目のタイトルはA列にまとめ、B列、D列、F列、H列・・・の文字列はB列にまとめたいです。 下の例の場合だと、C列の1行目のタイトルをB列の下端の左下にあたる(A7)に移動させ、 D列の2行目から入力された文字列を右となりの(B7)に移動させたいです。これの繰り返しです。     A列     B列     C列     D列 1    あ       A       い       2             B                a   3            C                b 4              D               c 5             E                6              F                            ↓     A列     B列     C列     D列 1    あ       A              2             B                   3            C                 4              D                5             E                6              F      7      い      a 8             b 9             c よろしくお願いします。

  • エクセル 文字列を分割するマクロについて

    1行目から200行目くらいまで、A列に次のようなデータが入っています。 (A1セル) A 1 A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S このデータを下記のようにカンマごとに別のセルに分割するマクロを 教えていただけないでしょうか。 A1に「A」を、S1に「S」を入れたいと思っています。  A B C ・・・ R S 1 A B C ・・・ R S

  • 行にある文字をカンマ区切りでひとつのセルに

    エクセルで次のようなデータがあります "a","b","c","d" "1","","3","4" "1","2","","4" "","2","3","4" このデータに対して 2行目から4行目のe列に その行に入っている数字をカンマ区切りで表示させたい 下記のイメージです "a","b","c","d","e" "1","","3","4","1,3,4" "1","2","","4","1,2,4" "","2","3","","2,3" ダブルコーテーションマーク"はついていませんが 質問時、表が崩れるのでこれをつけさせてもらいました 上記のイメージですがデータ的には 900行、50列ほどあります 関数かVBAでやれる方法を教えていただきたいのですが・・・ 関数・VBAについては昔やったことがある程度です 時間をかけて何かをみながら・・・やれる程度のものです ヒント等いただければ幸いです

専門家に質問してみよう