• ベストアンサー

Excelで文字を変換,結合,分割をする。

セルA1に[火1] セルA2に[火1,火2,水1,水2,木1,木2] セルA3に[水3,水4,水5] が入っているとします。それを セルB1に[火1] セルB2に[火1~2]セルC2に[水1~2]セルD2に[木1~2] セルB3に[水1~3] と入力したいと思っています。 関数で対応できますでしょうか? もしくは、カンマ区切りでデータを割った後に関数でしょうか? 一番効率のよい方法を教えてください。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 無理矢理って感じのVBAでやってみました。 ↓の画像のようにA列の1行目からデータがあるとします。 (1)数字の前は一文字とし、同じ文字である。 (2)文字の後の数値は続き番号になっている。 という前提です。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j, k As Long Dim myArray As Variant Application.ScreenUpdating = False For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row myArray = Split(Cells(i, 1), ",") k = UBound(myArray) For j = 2 To k + 2 Cells(i, j) = myArray(j - 2) Next j Next i For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For j = Cells(i, Columns.Count).End(xlToLeft).Column To 3 Step -1 If Left(Cells(i, j - 1), 1) = Left(Cells(i, j), 1) Then Cells(i, j) = Mid(Cells(i, j), 2, Len(Cells(i, j))) End If Next j Next i For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For j = Cells(i, Columns.Count).End(xlToLeft).Column To 3 Step -1 If IsNumeric(Cells(i, j)) And IsNumeric(Cells(i, j - 1)) Then Cells(i, j - 1).Delete (xlToLeft) End If Next j Next i For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row For j = Cells(i, Columns.Count).End(xlToLeft).Column - 1 To 2 Step -2 Cells(i, j) = Cells(i, j) & "~" & Cells(i, j + 1) Cells(i, j + 1).Delete (xlToLeft) Next j Next i Application.ScreenUpdating = True End Sub 'この行まで ※ じっくり考えればもう少し簡単なコードになるかもしれません。 他に良い方法があればごめんなさいね。m(_ _)m

gastronome
質問者

お礼

ありがとうございます。 完璧でした。 私も勉強したいです。

関連するQ&A

  • 効率よく変換したい エクセル2002

    件数が多いため、手動で行うことに限界を感じ、相談させていただきます・ 40000件ほどのデータがあります。 1つのセルごとに曜日と営業時間が入力されています。 例)火 11:00~13:00 水木 10:00~13:00 これを下記のように変換したいのですが 効率よく変換していく方法はないでしょうか。 火1100・火1200・水1000・水1100・水1200・木1000・木1100・木1200

  • エクセル教えてください!

    【シート1】    1  2   3   4   5 A  ★ B  1  朝  昼  夜 C  2  月  火  水  木 D  3  年  月  日  分 シート1の「A1」セルの★のところに、「B1」セルの1を手で入力したときに 事前に作成済みのシート2の文章の指定した各セルに 「B2」の朝、「B3」の昼、「B4」の夜がそれぞれ入力されるようにしたいんですが可能ですか? 同様に、★に「C1」の2を入力すると、今度は「月」「火」「水」「木」がシート2の文章に、、、 ★に「D1」の3を入力すると、今度は「年」「月」「日」「分」がシート2に入力される。 急ぎで困ってます・・・。 どなたか教えてください!!お願いします。

  • EXCEL カンマ区切りされたデータをVlookup関数で処理

    EXCELに関して、教えていただきたいことがあり、 投稿させていただきます。 一つのセル内に・・・ A1,B1,C2 とカンマ区切りされたデータがあり、 それをVlookup関数を利用して、 佐藤さん,田中さん,鈴木さん とカンマ区切りのままで、 データ呼び出し処理をしたいと考えています。 A1,B1,C2の段階でセル分割を行い、一つずつのセルで Vlookup関数を使えば、呼び出すことはできましたが、 扱う件数が多いため、一発処理ができればと考えております。 ご存知の方、教えていただけますでしょうか。 よろしくお願いします。

  • エクセルの文字列結合

    ご存知の方がいらっしゃいましたらよろしくお願い致します。 エクセルの文字列でA1のセルに「あ」と入れて、 B1のセルに「い」、C1のセルに「う」と入力して、 D1のセルに「A1&B1&C1」という数式を立てれば D1のセルは「あいう」となるのですが、 A1のセルに「あ」と入力して B1のセルに「0001」と半角で入力し、C1のセルに 「A1&B1」という数式を立てれば C1のセルが「あ1」となってしまいます。 そこでC1のセルを「あ0001」とするには どうしたらよろしいでしょうか? 0001は0002、0003・・・と続いていくため、 文字列扱いにはできません。 なんとかして A1に「あ」B1に「0001」C1のセルを自動で「あ0001」 A2に「あ」B2に「0002」C2のセルを自動で「あ0002」 A3に「あ」B3に「0003」C3のセルを自動で「あ0002」 としたいのです。よろしくお願い致します。

  • エクセル関数について

    エクセル関数にてご教授していただきたいことがあり質問させて下さい。 【入力データ】 (a)あ,(b)い,(b)う,(a)え,(a)お,(c)か 上記のような入力データ(カンマ区切り)があります。 このデータを 【コンバートデータ】 (a)あ,え,お,(b)い,う,(c)か のように加工したいのです。 マクロでやればといえばそれまでなのですが、エクセル関数にて実装できるか確認したく。。 ご教授お願いいたします。

  • エクセルについて質問です。

    エクセルについて質問です。 セル内にカンマで区切られた数値群があります。 その数値をセル単位で集計するためにはどうすればいいでしょうか。 vlookupやcountなどの一般的な関数だとカンマ区切りのセルをうまく集計することができませんでした。 例 A 1,2,3,4,7,8,9,10 B 3,4,5,6,7,8 C 1 D 1,4,8,9,10 1を含むセルは3つ←これを集計したい よろしくお願いします。

  • エクセル 関数

    A   B   C    D 10/1  金  9:00  12:00 10/2  土  9:00  13:00 10/3  日  9:00  14:00 10/4  月  9:00  11:00 10/5  火  9:00  15:00 :   :    : 5        5     2               3 Aは日付です。 Bは曜日です。 Cは出勤時間 Dは退勤時間 そこでお聞きしたいのですが・・ 12:00まで働いた曜日別のデーターがほしいのですが・・ 曜日  12:00   15:00  18:00 月    1      2    1 火    2      1    1 水    1      0    0 木    1      0    1 :    :      :   : 上記のような感じにしようと思っています。 関数がわからなく困っています。 宜しくお願いします。。

  • Excelにてセル内容の分解

    質問させて頂きます セルA1、A2に書きのようなカンマ区切りのデータが入っているとします、 [A1] 0,1,3,4 [A2] 2,3,4 このデータを下記のように0=A1、1=b1・・・・ といったように分解させるにはどうしたらよいのでしょうか? ご教授をお願い致します   A B C D E 1| 0 1   3 4 2|     2 3 4

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

    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

  • エクセルで文字をカウントしたいのですが…

    どの関数を使えばいいのか分からなかったので質問させて頂きました。 例えばA1セル~D1セルに 1,2,3,4と入力した場合E1セルに「4」 1,1,1,2と入力した場合E1セルに「2」 2,2,3,4と入力した場合E1セルに「3」 となるような関数はないでしょうか? ようはA1,B1,C1,D1の4つのセルに何種類の数字が あるかをE1セルに出したいのです。 宜しくお願いします。

専門家に質問してみよう