エクセルで任意の日本語でセルの内容を分割する方法

このQ&Aのポイント
  • エクセルで任意の日本語でセルの内容を分割する方法を解説します。
  • 具体的には、A列の内容をCとDに分割する関数またはマクロのボタンを作成する方法を紹介します。
  • この方法を使えば、簡単にセルの内容を分割して整理することができます。
回答を見る
  • ベストアンサー

エクセル 任意の日本語でセルの内容を分割する方法

エクセル 任意の日本語でセルの内容を分割する方法   A                     B 1 店舗:○○店(全角スペース)取引先:△△  1000円 2 店舗:□□店(全角スペース)取引先:☆☆  2000円 3 店舗:○○店(全角スペース)取引先:◆◆  3000円   ・                     ・   ・                     ・   ・                     ・   C    D 1 ○○店   △△ 2 □□店   ☆☆ 3 ○○店   ◆◆   ・    ・   ・    ・   ・    ・ いつも拝見させて頂いております。 上記の用なA列の内容を、CとDに分割して貼り付ける関数またはマクロのボタンを考えているのですが、 全くのお手上げ状態で大変困っております。 どなたかヒントでも構いませんので、教えていただけないでしょうか? よろしくお願い致します。 使用環境:Windows7x64 Office 2007

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

  • ベストアンサー
  • molly1978
  • ベストアンサー率33% (393/1186)
回答No.2

C =MID(A1, FIND("店舗:",A1,1)+3,FIND(" ",A1,1)-FIND("店舗:",A1,1)-3) D =RIGHT(A1,LEN(A1)-FIND("取引先:",A1,1)-3) 少し複雑ですが、店舗名、取引先が2文字でなくても対応できます。

rose_web
質問者

お礼

ご回答有り難うございます! 上記の関数で全く問題ありませんでした!本当に有り難うございます。 恐縮ですが、新しく今回の続きをご質問させて頂いておりますので、お力をお貸し頂けると幸いです。 よろしくお願いします。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

いろいろ試してみましたが、文章の内容から、三つの条件を推測し、それが存在するとなかなか難しくなります。(なお、全角のスペースは確実にあとは思っていません) 1. 数字のついた店名や取引先がないとは限らない。 2. >1 店舗:○○店(全角スペース)取引先:△△  1000円 取引先名と金額の間にスペースがあるとは限らない。 3. 金額は半角とは限らない。 そういうことを考慮すると、以下のようなコードになりました。 コントロールツール・ボタンで、ダブルクリックして、シートモジュールを開け、そこにコードを貼り付けます。 Private Sub CommandButton1_Click()  Dim ar(1) As Variant  Dim buf As String  Dim c As Variant  With CreateObject("VBScript.RegExp")   Application.ScreenUpdating = False   For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))    If c.Value Like "店舗*" Then     buf = StrConv(c.Value, vbNarrow)     ar(0) = PickUpText(buf, "店舗.([^\s]+)\s*.+")    End If    If buf Like "*取引先*" Then     buf = Trim(Mid(buf, Len(ar(0)) + 4))     ar(1) = PickUpText(buf, "取引先.([^\s]+)")    End If    c.Offset(, 2).Resize(, 2).Value = ar '貼り付け   Next   Application.ScreenUpdating = True  End With End Sub Private Function PickUpText(ByVal strTxt As String, ByVal mPattern As String) Dim Matches As Object With CreateObject("VBScript.RegExp")  .Pattern = mPattern  .Global = False  Set Matches = .Execute(strTxt)   PickUpText = Matches(0).SubMatches(0) End With End Function

rose_web
質問者

お礼

あらゆる事態を想定して頂き、またご丁寧にご教授頂き有り難うございます! データの入力に規則性がない場合に是非利用させて頂きます。 素晴らしすぎる意外に言葉が見つかりません。本当に本当に有り難うございます。 恐縮ですが、新しく今回の続きをご質問させて頂いておりますので、お力をお貸し頂けると幸いです。 よろしくお願いします。

noname#169205
noname#169205
回答No.3

Cに=MID(A1,4,FIND(" ",A1)-3) Dに=MID(A1,FIND("取引先:",A1)+4,LEN(A1)-(7+LEN(C1)))

rose_web
質問者

お礼

ご回答有り難うございます! 今回はmolly1978様にお答え頂いた内容をご使用させて頂きました。 今回の続きをご質問させて頂いておりますので、お力を貸して頂けると助かります。 よろしくお願いします。

回答No.1

  Cには =MID(A1,FIND(" ",A1,1)+1,3) Dには =MID(A1,FIND(":",A1,1)+1,2) どうです  

rose_web
質問者

お礼

度々申し訳御座いません。 店舗と取引先は必ず2文字ではない場合はどうすればよろしいでしょうか?

rose_web
質問者

補足

早速のご回答有り難うございます。 ご指摘ただいた内容を入れてみましたところ、 D(=MID(A1,FIND(":",A1,1)+1,2))の方にCに入れたい内容が、 C(=MID(A1,FIND(" ",A1,1)+1,3))の方は#VALUE! エラーが表示されました。 Cの部分は=MID(A1,FIND(":",A1,1)+1,2)でいけます! 有り難うございます! 少しご指摘いただいた関数を変えて試してみたいと思います!

関連するQ&A

  • 店舗名(任意の単語)を基準にデータをリスト化していく方法

    店舗名(任意の単語)を基準にデータをリスト化していく方法 前回ご質問させて頂いた内容の続きになります。 一度にに質問するとタイトルが分かりにくくなるので、分けて質問させて頂きました。 はじめに表(1)の様に、A~Dの内容を店舗名で振り分けて、それぞれの店舗欄の一番下の空欄に追加するマクロを考えております。  (○○店はE~G □□店はH~J) なお、表(2)のように翌営業日には、前日分は存在しなくなります。  (A~Dには毎回、当日分のデータが表示されます。) こちらも全くのお手上げ状態で大変困っております。 どなたか、教えていただけないでしょうか? よろしくお願い致します。 使用環境:Windows7x64 Office 2007 ~ここから表(1)~ 2010年9月17日分    A       B    C   D 1  2010/09/17  ○○店  △△  1000円 2  2010/09/17  □□店  ☆☆  2000円 3  2010/09/17  ○○店  ◆◆  3000円    ・       ・    ・    ・    ・       ・    ・    ・    ・       ・    ・    ・    E      F    G      H      I    J 1  ○○店                □□店 2  日付     取引先  金額     日付     取引先  金額 3  2010/09/17 △△  1000円  2010/09/17 ☆☆   2000円 4  2010/09/17 ◆◆  3000円 ~ここまで表(1)~ ~ここから表(2)~ 2010年9月18日分    A       B    C   D 1  2010/09/18  ○○店  ■■  4000円 2  2010/09/18  □□店  ●●  5000円 3  2010/09/18  ○○店  ◆◆  6000円 4  2010/09/18  □□店  ★★  7000円    ・       ・    ・    ・    ・       ・    ・    ・    ・       ・    ・    ・    E      F    G      H      I    J 1  ○○店                □□店 2  日付     取引先  金額     日付     取引先  金額 3  2010/09/17 △△  1000円  2010/09/17 ☆☆   2000円 4  2010/09/17 ◆◆  3000円  2010/09/18 ●●   5000円 5  2010/09/18 ■■  4000円  2010/09/18 ★★   7000円 6  2010/09/18 ◆◆  6000円 ~ここまで表(2)~

  • セル内の文字をスペースによって分割するには?

    教えてください。 a1 に DX-09 1 SD-4 2 HPE-25 3 と、全角半角入り混じってスペースで区切られた文字が入っています。 これを、B1,C1,D1,E1,F1,G1にそれぞれDX-09,1,SD-4,2,HPE-25,3 と分割させたいです。 必ず半角スペースで区切られていますが、それぞれの文字の長さはマチマチです。 また、全角数字のも文字の長さは不定形です。 excel2010を使用しています。 お知恵を貸してください。

  • エクセル セルを3つに分割する数式

    お世話になります。 表題通り セルを3つに分割する数式についてアドバイスを頂けると助かります。 作業の円滑化のために、区切り位置は使用しないつもりです。 1つのセルに 「10 20 30 」(数字スペース数字スペース数字)のような 3つの数字が入っており、それを分割したいのですが、 次のような桁数がバラバラなものも、正しく分割できるA2,A3,A4の数式はありますでしょうか? 例:       1        2      3     4 A  5 10 200      5 10 200 B  100 0 100  100 0 100 C 30 30 30 30 30 30 A2の場合は、 =LEFT(A1,FIND(" ",A1)-1) でうまくいきましたが、 真ん中、右側がうまくいきません。 宜しくお願いいたします。

  • EXCELで、文字列を任意の文字数毎に分割するには

    ≪やりたい内容と条件≫ ◆EXCELで、文字列を任意の文字数毎に分割したいです。 ◆文字列は、全角・半角・記号を含みます。 ◆1つのセルが半角80桁という制限があり、その上限を超えると、右の次のセルに流し込まれるようにしたいです。(A1は元の文字列1500桁くらい、以降B1,C1,D1,E1・・・という具合に流し込み) ≪試した内容≫ MIDB関数を見つけ挑戦しましたが、1つ目のセルはうまくいきますが、その後が出来ません。例えば、文字列が「・・・・・・abcあいうえお」となっていた場合、B1は「・・・・・・abcあいう」、C1は「 お」(「お」の前は、半角スペース)となります。 何かよい方法はないでしょうか。 一度に出来ないようであれば、A1-B1で残りの文字列が表示できれば、それ以降はまた関数を入れて一つ一つやっていきたいと思っています。 よろしくお願いいたします。

  • 住所のセル分割について VBA

    マクロについてお尋ねします。 A1のセル ●●市山田町1-1山田ハウス111号 のように町名と番地(全角数字)とアパート・マンション名が続けて入っているセルがいくつもあります。 これを B1→ ●●市山田町 C1→ 1-1山田ハウス111号 ※住所を前から見ていき、全角数字(1~9)が出たらC1に分割 のように2つのセルに分割したいのです。 A1のセルで全角数字(1~9)のいずれかの数字が出たら その数字からC1に分割したいのですがどのようにすればいいのでしょうか。 町名と番地(1-1)の間にはなにもありません。 また番地までの住所の長さはまちまちです。 よろしくお願いいたします。

  • エクセルファイルを取引先ごとに分割

    1つのエクセルファイルにすべての取引先の情報が入っているファイルが存在するのですが、そのファイルを取引先ごとに自動で分割したいと思っています。 データの並びは以下のようなものです。 A列  B列  C列 取引先名 取引内容 金額 取引先1  ○○○  1000 取引先1  ○○○  1000 取引先2  ○○○  1000 取引先2  ○○○  1000 ネットでいろいろ検索し下記までは見つけて実施してみたのですが、このままですと分割したファイルに表題(各列の1行目の部分)をつけることができません。 http://soudan1.biglobe.ne.jp/qa4088700.html 分割したファイルのすべてに表題をつけたいと思い上記の内容を変更してやってみましたが今の自分の力ではうまくいきません。 申し訳ありませんが、表題部をつけてファイルを分割する方法をアドバイスいただけないでしょうか 宜しくお願いいたします。

  • Excelで任意の文字列を半角スペースで分割

    一つのセルに複数の内容が半角スペースで区切られて記載されているデータがあります。 これを半角スペースで分割することは可能でしょうか? 例:A列に 01 22 3 444 5555 6 77 888 999 111 222 333 11111 2 33 44 5555 これをB~J列に B C D E F G H I J 01 22 3 444 5555 6 77 888 999 111 222 333 11111 2 33 44 5555 という様に自動的に分割・入力させたいのですが可能でしょうか? ※添付イメージを参照ください。 A列の様な形式のデータを日常的に分割する必要があり、現在は[データ>区切り位置]で手動入力を行っているのですが手間がかかる上ミスをしてしまうこともありなんとか自動化したいのです。 項目数・文字数ともデータによりバラバラなため、単にfind関数やmid関数などを使っても上手く行かず、 アイデアをいただけますと助かります。何卒よろしくお願い致します。 ※実際の環境では「BS列に記載の内容をBT列以下に入力」「データの内容は【aaa.jpg bb_1.gif …】の様な画像ファイル名」となりますが質問ではシンプルにさせていただきました。

  • EXCELのA1セル内のデータをを複数セルへ分割する方法は?

    EXCELのA1セル内に「G01520-50-1」というデータが入っています。 (例1)B1セル内に「G01520」、C1セル内に「50」、D1セル内に「1」 または(例2)B1セル内「G01520]、C1セル内に「50-1」のように変換して 複数セルに分割する方法があれば教えてください。 (例1)(例2)のどちらでも良いのですが、できれば(例2)のように 分割したいのです。

  • エクセルのセルの結合について

    恐れいります。 エクセルのセルの結合方法について教えて下さい。 詳細は添付の画像を御覧ください。 3つのセルにそれぞれ、A、B、Cとあるものを一つのセルにA B Cとまとめたいと思っています(半角スペース、あるいは全角スペース) ご存知の方、ご教示いただけますと幸いです。

  • エクセルで文章を分割する方法

    エクセルのひとつのセル(A1、A2~)に ヒロシマ300あ0001 シマネ500い0002 ヤマグチ33う0003 オカヤマ50え0004 という風に入力されているものを、 (A1)ヒロシマ (B1)300 (C1)あ (D1)0001 のように分割したいのですが、いい方法はありますか? 教えてください~

専門家に質問してみよう