• ベストアンサー

漢字と数字が混じった文字列を漢字と数字に分けたい

Aを漢字、Bを数字とすると AABBBABBBBAAAのように漢字と数字が混ざった文字列がセルA1にある場合に、 セルB1、C1、D1、E1・・・に AA、BBB、A、BBBB、AAA、・・・というように、文字を切り分けたいのですが、どうすれば出来るでしょうか?

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

関数では無理なのでVBAで組んでみました。 Alt+F11キーでVisualBasicEditorを呼び出し、メニューの挿入で標準モジュールを表示させたら、以下のコード(Sub~End Sub)をコピペしてみてください。 Alt+F11キーで再度ワークシートに戻ったら、メニューのツール、マクロ、マクロで出てきたTEST01を実行します。 Sub test01() Dim x As String Dim c As Integer x = Cells(1, 1).Value c = 2 For i = 1 To Len(x) If i > 1 Then If Not (IsNumeric(Mid(x, i, 1))) Then If IsNumeric(Mid(x, i - 1, 1)) Then c = c + 1 End If Else If Not (IsNumeric(Mid(x, i - 1, 1))) Then c = c + 1 End If End If End If Cells(1, c).Value = Cells(1, c) & Mid(x, i, 1) Next End Sub

VitaminBB
質問者

お礼

回答ありがとうございます。 うまく作動しました。 マクロを作ることは大変なのでしょうが、 出来たマクロはシンプルで良いですね。

その他の回答 (4)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.5

次の方法は如何でしょうか。 1.該当A1セルをクリック 2.データ→区切り位置 3.「スペース・・・」を選択し、次へ 4.データプレビュー上の各データの区切り位置をクリックし、完了

VitaminBB
質問者

お礼

回答ありがとうございます。 スペースが無いので困っています。

noname#37676
noname#37676
回答No.4

#3です。 ちなみに、前述のように文字列の文字数が固定ならば B1=LEFT(A1,2) C1=MID(A1,LEN(B1)+1,3) D1=MID(A1,LEN(C1&B1)+1,1) E1=MID(A1,LEN(B1&C1&D1)+1,4) F1=RIGHT(A1,3) でOKですが、いかがでしょう?

VitaminBB
質問者

お礼

回答ありがとうございます。 固定ではないので困っています。

noname#37676
noname#37676
回答No.3

>AABBBABBBBAAAのように漢字と数字が混ざった文字列 この文字列の文字数及び、漢字と数字の配列は固定でしょうか? その場合、LEFT関数/RIGHT関数などの組み合わせにより抽出が可能かも。

VitaminBB
質問者

お礼

回答ありがとうございます。 固定ではないので苦労してます。

  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

エクセルには標準では正規表現ができませんので、関数を組み合わせて作るのは無理でしょう。VBAが組めるのなら自作の関数を作ってしまえば済む問題なんですが。 次善の案としては「AA-BBBB-A-BB」のように特定の文字列で間を結ぶようにするとか(これならFIND関数やMID関数を組み合わせるだけで可能です)ぐらいでしょうか。

VitaminBB
質問者

お礼

回答ありがとうございます。 入手したデータが大量にあるので、-を手で追加することが出来ないのです。

関連するQ&A

  • A列にあったものには1、C列にあったものには2

    シート1の内容をVBAをつかってシート2のようにしたいです。 つまり、シート1の2行目以降のデータをシート2のB列につなげて、 A列には シート1の1行目に記載している番号をふっていきます。 もともとA列にあったものには1、C列にあったものには2、E列にあったものには3と振りたいのですが、どのようにマクロを書けばいいでしょうか? [Sheet1]   A  B  C  D  E 1 1  2  3 2 aa aaa aaaa 3 bb bbb bbbb 4 cc cccc 5  dddd ----------------------------- [Sheet2] A B 1 1 aa 2 1 bb 3 1 cc 4 2 aaa 5 2 bbb 6 3 aaaa 7 3 bbbb 8 3 cccc 9 3 dddd

  • エクセルの文字処理

    以前に同じ様な質問があったかも知れませんが、探しきれなかったので教えてください。 A1~A4の4つのセルに以下のスペースが入った文字列が入っていた場合 A1|AAA A2|AAA BBB A3|AAA BBB CCC A4|AAA BBB CCC DDD    A   B   C   D  1|    AAA 2|AAA BBB 3|AAA BBB CCC 4|AAA BBB CCC DDD という具合にしたいのです。 条件は  ・セル内にスペースで区切られない文字列があった場合には、B列に入れる  ・それ以外はスペースで区切って、A列B列C列D列に入れる  ・文字数は3文字固定ではなく全角半角が混在 以上です。すいません宜しく願いします。

  • エクセルの文字列の検索に関して

    また、エクセルに関しての質問です。 例えば  A B C D 1あ 1 2い 2 3う 3 4え 4 5お 5 6か 6 7き 7 8く 8 このような漢字で文字列が縦に入力されていて、  A B C D E 1あ 1   お 5 2い 2   う 3 3う 3 4え 4 5お 5 6か 6 7き 7 8く 8 このようにD列にある文字に対してA列にある文字で該当する文字を発見し横のBセルにある番号を取ってくるということがしたいです。 この場合だとD1は「お」なので、A列の上から見ていくとA5に「お」があるので、B5の数字「5」をEに入力といったような具合です。簡単なように見えますが、複数の文字列を横断的に検索することができません。 誰か詳しいお方お教え願います。

  • エクセルで複数の列から複数の文字列(数字)を選びたいです。

    エクセルで複数の列から複数の文字列(数字)を選びたいです。 A   B   C   D   E   F   G   H 1   12   1   4   5   8   6 2   36  7   2   5   6 3   55  3   4   88  1  3  8 5   87 上記のような表があったとき、C列からG列のいずれかに1、3、8のどれかが 含まれるとき、H列にB列の数字を入れたいのですが、どのようにすれば できるのでしょうか? この場合、A列の1,3,4段にそれぞれ12、55、88と入れたいということです。 よろしくおねがいいたします。

  • エクセルの文字列操作:縦に繰り返す方法

    A、B、C列に半角英数文字、D列に数字が入っています。 A、B、C列の文字が繋がり、D列の数字分繰り返されるような計算式等を考えているのですが、 繰り返しの条件が縦に繰り返さなければならない為、四苦八苦しています。 イメージとしましては、例えば A1セルが「a」B1セルが「b」、C1セルが「c」、D1セルの数字が「3」 A2セルが「AA」B2セルが「BB」、C2セルが「CC」、D2セルの数字が「5」 だとすると、 abc abc abc AABBCC AABBCC AABBCC AABBCC AABBCC といった繰り返し結果が、別の列(○1~○7)に出来て欲しいのです。 最終的には、この結果をCSVで書き出して、バーコードとして専用プリンタで印刷しようというのが目的です。 何かよい手段は無いでしょうか?あるいはエクセルでは不可能なのでしょうか? 知恵をお貸しください。 宜しくお願い致します。

  • *EXCEL*2シートにあるデータを同じ文字列があるか検索して隣のセルを関連づける

    タイトルではわかりにくいかと存じますがExcelの機能につきましてご質問です。 シート1の列Aに「文字列a」~「文字列z」      列Bに「文字列aaa」~「文字列zzz」が入力してあるとします。 シート2の列Dにシート1の列Aに入力してある文字列と同じ文字列が 入力してあるのですが、順は不同となります。 このときシート2の列Dの横(列E)に対応するシート1のAの横列(B) の文字列を表示させたいのですが、なにかよい方法はございます でしょうか。 シート1         シート2 A  B          D   E a  aaa         d   ddd ←この部分を関数などで b  bbb         a   aaa  表示させる c  ccc         b   bbb d  ddd         c   ccc ご回答いただけますと大変ありがたいです。 よろしくお願いいたします

  • <文字列マクロについて>

    <文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、  指定した数だけ並べる    あいうえお    ←A1セルからE1まで5列(これは状況により変わる)       ↓(マクロ実行:3行同じ数だけ並べるという指定)  あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ  あ  あ  い  い  い  う  う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい  う  え  え  え  お  お  お ?規則的に並んだデータのまとまりをセットで移動する。  例だと5つの塊(これは変数とおきたい)    あ A              a  い B              b  う C               c   え D               d  お E              e    ↓(マクロ実行)  あ  い  う  え  お  A  B  C  D  E      ・  ・  ・  ・    a b c d e    

  • エクセル 文字列-文字列 を数式で区切りしたい

    文字列の文字数が列で同じならLEFT、RIGHTで作ることができるのですが、 左右の文字数がランダムの場合がわかりません。 (例) A列 AAA-AAAAAA AA-AAAAA AAAAA-AA ↓ B列    C列 AAA   AAAAAA AA    AAAAA AAAAA AA この時のB1とC1の数式の作り方をご教授ください。 宜しくお願いいたします。

  • 2つの文字列に合うデータ取り出しについて

    A列:氏名 B列:旅館名 C列:部屋番号 D列    い      AAA      101    =B2+C2     お      CCC      201    =B3+C3    う      BBB      301      ・    え      AAA      102    あ       旅館名と部屋番号に合う名前を取り出すのに E列:旅館名 F列:室番 G列:氏名と表を作っています。    AAA     101    AAA     102               ・             ・      BBB     101             ・    CCC     101             ・  他の方が質問されてたのを参考に A列に氏名、B列に旅館名、C列に部屋番号、D列を作り(=b+c)として 他上記、G列に=VLOOKUP(旅館名&室番,$C$2:$D$100,2,FALSE) としましたがうまく行きません。 データソートすればよいのですが、それではやりたい事にはならないのです。 宜しくご指導お願いします。

  • A列とC列に数字、B列に文字列が下記の通り配置されています。A列の番号

    A列とC列に数字、B列に文字列が下記の通り配置されています。A列の番号の小さいものが”親”、番号の大きいものが”子”の様な関係(1が親、3が子、6が孫の関係)にある配置が有る場合に、D列に自分の親の文字列、E列にC列の値を元に値(子供は親×子、孫は親×子×孫の関係)を設定したい場合、どの様な方法で対応すればよいでしょうか? A列   B列   C列   D列   E列 1   文字A   3          3 3   文字B   2   文字A   6 6   文字C   2   文字B   12 1   文字D   1          1 3   文字E   2   文字D   2 6   文字F   2   文字E   4 3   文字G   1   文字D   1 6   文字H   1   文字G   1

専門家に質問してみよう