エクセルの関数について詳しい方、助けてください!

このQ&Aのポイント
  • エクセルの関数について詳しい方、教えて頂けませんか?
  • A1セルに文字列があり、その文字列を複数のセルに分けたい場合、どのような計算式を使用すれば良いですか?
  • また、お名前が含まれる文章をA1セルに入力し、そのお名前を分けて他のセルに入れる方法も教えてください。
回答を見る
  • ベストアンサー

エクセルの関数について詳しい方、助けてください!

すみません、エクセルの関数について詳しい方、教えて頂けませんか? Q1 A1セルに、     [商品名]:キャンディ イチゴ味[CAN-01] 100 円 x 10 個     [商品名]:もぐもぐグミ グレープフルーツ[MOGUGUMI-02] 80 円 x 5個    など、長さが違う文をペーストします。    B1~E1セルに計算式を入れ、A1セルを分けて入れたいです。     B1に、 キャンディ イチゴ味     C1に、 CAN-01     D1に、 100     E1に、 10      と入れる計算式が知りたいです。 Q2 A1セルに、     お名前 : 山田 太郎 (ヤマダ タロウ) 様     お名前 : 長谷川 太一郎 (ハセガワ タイチロウ) 様    など、長さが違う文をペーストします。    B1~C1セルに計算式を入れ、A1セルを分けて入れたいです。     B1に、 山田 太郎     C1に、 ヤマダ タロウ    と入れる計算式が知りたいです。     MID?LEN?自分でもやってみたのですが、出来ません。。。     すごく困っています。よろしくお願い致します!

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

すべて同じ数式で対応するなら以下のような数式にします。 =MID(A1,開始位置の目印の文字位置+1,目印と目印間の文字数) ここで開始位置は以下の数式で表示できます。 例えば同じセル中に2つ出てくる [ 、や ] の文字位置を調べたいときは、6文字目以降を検索する以下の式を使用します。 =FIND("[",A1,6) したがってB1セルに抽出する「:」tp「[」で挟まれる最初の文字をは以下の式で表示できます。 =MID(A1,FIND(":",A1,6)+1,FIND("[",A1,6)-FIND(":",A1,6)-1) この数式の検索文字部分だけを変更すれば、すべて同じ数式でご希望の表示をすることができます。 C1セル =MID(A1,FIND("[",A1,6)+1,FIND("]",A1,6)-FIND("[",A1,6)-1) D1セル =MID(A1,FIND("]",A1,6)+1,FIND("円",A1,6)-FIND("]",A1,6)-1)*1 E1セル =MID(A1,FIND("x",A1,6)+1,FIND("個",A1,6)-FIND("x",A1,6)-1)*1 今回は関数がご希望のようですが、このようなケースでは検索置換で区切り位置部分を適当な文字(例えば#など)に置換し、置換する文字列の部分に何もいれずに必要のないデータ部分を一括削除して、この文字列を区切り位置機能で分割する方法の方が簡便な場合も多いと思います。

siroiruka2000
質問者

お礼

MackyNo1様 お返事ありがとうございます。 やってみました。 C1・D1・E1、そのまま使わせて頂きます。ありがとうございます! 詳しく教えて頂いたので、今勉強しています。 Q2、やってみているんですが、なかなか難しく、苦労しています。 がんばります!

その他の回答 (5)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

Q1  以下は、商品名や商品コードに、「円」の文字や「x」の文字が含まれていたり、定価や個数を表す数字の前後に空白を入れ忘れた場合でも、正常に表示する事が可能な関数です。 B1セルの数式 =IF(A$1="","",MID(A$1,7,FIND("[",A$1,7)-1)) C1セルの数式 =IF(A$1="","",MID(A$1,FIND("[",A$1,7)+1,FIND("]",A$1,7)-FIND("[",A$1,7)-1)) D1セルの数式 =IF(A$1="","",VALUE(SUBSTITUTE(MID(A$1,FIND("]",A$1,7)+1,FIND("円",A$1,FIND("]",A$1,7))-FIND("]",A$1,7)-1)," ",))) E1セルの数式 =IF(A$1="","",VALUE(SUBSTITUTE(MID(A$1,FIND("x",A$1,FIND("]",A$1,7))+1,LEN(A$1)-FIND("x",A$1,FIND("]",A$1,7))-2)," ",))) Q2 B1セルの数式 =IF(A$1="","",MID(A$1,7,FIND(" (",A$1)-7)) C1セルの数式 =IF(A$1="","",MID(A$1,FIND("(",A$1)+1,FIND(")",A$1)-FIND("(",A$1)-1))

siroiruka2000
質問者

お礼

kagakusuki様 お返事ありがとうございます。 やってみました。 Q2のC1、そのまま使わせて頂きます。 Q2のB1は、加工できるかやってみますね。ありがとうございます! 詳しく教えて頂いたので、今勉強していますが、なんだかこんがらかってきました。 皆様にご教授頂いたので、なんとかなりそうです。 本当にご協力ありがとうございました。大感謝です!

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

VBAも覚えてしまえば、1)も2)も質問する必要が無くなります。 この手の対応で「関数で解決」というのがベストな手段かどうかは検討事項でしょう。 VBAでの方法がまだ理解できていないから、 「関数」という手段しか思いつかなかった、それだけと思われます。 VBAで指定文字数分1文字ずつ処理させれば、 区切り記号のある1文字列を複数項目に分けることは 考えるけどもコマンドそのものはそう難しい話でもない。 VBAで 『キャンディ イチゴ味[CAN-01] 100 円 x 10 個』 は 『キャンディ イチゴ味』と『[CAN-01] 100 円 x 10 個』 そのあとで 『[CAN-01]』と『100 円 x 10 個』 そのあとで 『100 円』と『10 個』 と分けることができる。まずはここまでイメージする。 円や個を取ったりするのはその後で考える。 31文字分繰り返す過程で n文字目が"["なら・・・・B列候補、残りが見つかる n文字目が"]"なら・・・・C列候補、残りが見つかる n文字目が"x"なら・・・・D列候補、残りが見つかる 2)も同じ。 "("が見つかったときが、文字列の分岐。 ------------------------------------------------- 【サンプル】: ファイル名パスからファイル名を取り出す原理を参照すると良い。 Public Function GETFILE(st As Variant) Dim I As Long Dim L As Long Dim WW As String L = Len(st) For I = L To 1 Step -1 If Mid(st, I, 1) = "\" Then Exit For End If Next I If I > 0 Then GETFILE = Right(st, L - I) Else GETFILE = st End If End Function ---------------------- これを実行すると ?GETFILE("c:\aaa.txt") aaa.txt ファイル名が取り出せます。 ---------------------- 「FIND」の多用は、わかりにくくさせるし 何度もカーソルを動かすことであり、処理遅くさせる要因に なりかねないのであまりお勧めでないですね。 ある文字列を複数に分けるには、 「規則的な区切り文字がきちんと存在するか」、で変わります。

siroiruka2000
質問者

お礼

layy 様 お返事ありがとうございます。 今は、サーバから来たメールをそのままコピ&ペしてエクセルに貼り付け、繰り返しの作業はマクロを利用して納品書を印刷したりしています。 が、実際、エクセルのマクロですらまともに使えず、すみません。。。 プログラミングされる方はほんとうにすごいと思います。 せっかく丁寧にアドバイスしてくださったのに、すみません。ありがとうございました。

  • kyos554
  • ベストアンサー率0% (0/3)
回答No.3

TXT文を入手するのではなく、CSVファイルを入手すべきです。 "[","]","円 x", "(",")"を文字関数で何文字目かを調べ、 FIND()文やFINDB()文で該当文字の位置をそれぞれ調べます。 =FINDB("[",RC[1],1) など。 更にTRIM()関数でスペースを除去すると出来そうです。 ても、そんな手間を掛けるより、 CSVファイルを入手できるよう 関係部署にまずご相談される事をお奨めします。

siroiruka2000
質問者

お礼

kyos554 様 お返事ありがとうございます。 おっしゃるとおりなのですが、入手できるファイル形式が、すべての顧客がひとつのシートになっていて、商品数の数だけ行があり、作業効率が悪いみたいです。 運営者に相談してみたのですが、サポート範囲外と言われてしまいました。 前の会社のものだと横でなく縦に並んでいたので、簡単だったんですよね。。 がんばります。ありがとうございました!

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

こんばんは! 一例です。 Q1が判ればQ2は同じ方法になりますので、 とりあえずQ1の方法です。 コツコツとそれぞれのセルに数式を入力するしかないようなので・・・ 一例です。 B1セルに =LEFT(A1,FIND("[",A1)-1) C1セルに =MID(A1,FIND("[",A1)+1,FIND("]",A1)-FIND("[",A1)-1) D1セルに =MID(A1,FIND("]",A1)+1,FIND("円",A1)-FIND("]",A1)-1)*1 F1セルに =MID(A1,FIND("x",A1)+1,FIND("個",A1)-FIND("x",A1)-1)*1 E1・F1セルの最後の「*1」の部分は数値化するためにつけています。 尚、「x」の部分は「ばつ」として変換しているのか・アルファベットの「x」としているかで違いますのでA列に入力されている「x」にしてください。 そして、エラー処理していませんので、A列が空白の場合はエラーが表示されます。 Q2に関してはこの応用で可能だと思います。 参考になれば良いのですが・・・m(__)m

siroiruka2000
質問者

お礼

tom04 様 お返事ありがとうございます。 >コツコツとそれぞれのセルに数式を入力するしかない そうですね、数学が苦手だったせいか、どうも大変難しく、苦労しています。 ありがとうございます!

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

関数でやりたいんですね。 あくまでも例と同じ様式の文字列である事が前提です。 Q1の答え B1 =RIGHT(LEFT(A1,FIND("[",A1,2)-1),FIND("[",A1,2)-7) C1 =MID(A1,FIND("[",A1,2)+1,FIND("]",A1,7)-FIND("[",A1,2)-1) D1 =MID(A1,FIND("]",A1,7)+1,FIND("円",A1,7)-FIND("]",A1,7)-1)*1 E1 =MID(A1,FIND("x",A1,7)+1,FIND("個",A1,7)-FIND("x",A1,7)-1)*1 D1とE1で最後に*1 しているのは数値にするためです。 Q2はQ1より単純ですのでQ1の答えを参考にご自分でやって見てください。

siroiruka2000
質問者

お礼

様 お返事ありがとうございます。 やってみました。 B1・C1・D1、そのまま使わせて頂きます。ありがとうございます! 今勉強しています。Q2、やってみているんですが、なかなか難しく、苦労しています。 がんばります!

関連するQ&A

  • エクセルについて

    エクセルで住所録を作っているのですが、名前とフリガナを同じセルに入力していました。フリガナだけを横のセルに移動することは可能でしょうか      A             B 1山田 太郎 ヤマダ タロウ  2山田 花子 ヤマダ ハナコ    A | B 1山田 太郎 | ヤマダ 太郎 2山田 花子 | ヤマダ ハナコ 宜しくお願いします。

  • エクセルでアドレス帳を製作しているのですが・・・

    エクセルでアドレス帳を作成しているのですが、 A1セル:氏名 B1セル:フリガナ C1セル:姓 D1セル:名 の項目名を入れてA2~100をアドレス帳として登録 【C2:姓】【D2:名】に入力した文字を【A2:氏名】の列に結合反映するようにA2~100に関数を=C2&D2&E2と登録しています。 例えば C2には 山田 D2には太郎 と入れたら A2には 山田太郎 と入力されます これをA2の姓と名の間に半角スペースを自動で入れてC2とD2に入力した文字のフリガナもB2に自動で入力させる方法を探しています A2       B2        C2     D2 山田太郎  ヤマダタロウ  山田   太郎 ↓ A2       B2        C2     D2 山田 太郎  ヤマダタロウ  山田   太郎 解かりずらい説明ですいませんが、アドバイスよろしくお願い致しますm(__)m

  • Excelでデータの照合

    Excelでデータを照合して抜き出す方法が知りたいです。 (例)   A            B            C 1 氏名          シメイ         頭文字 2 山田太郎       ヤマダタロウ     ヤ 3 Michael・Williams   Michael・Williams   マ 4 鈴木花子       スズキハナコ     ス 5 ピーター・アダムス  ピーター・アダムス  ピ ※名前は適当に考えました。 上のデータで Cの頭文字とBの先頭の文字が一致するかの確認ができるようにしたいです。   A            B            C      D 1 氏名          シメイ         頭文字   正誤 2 山田太郎       ヤマダタロウ     ヤ      ○ 3 Michael・Williams   Michael・Williams   マ      × 4 鈴木花子       スズキハナコ     ス      ○ 5 ピーター・アダムス  ピーター・アダムス  ピ      ○ あるいは、   A            B            C 2 山田太郎       ヤマダタロウ     ヤ 4 鈴木花子       スズキハナコ     ス 5 ピーター・アダムス  ピーター・アダ     ピ や、   A            B            C 3 Michael・Williams   Michael・Williams   マ のように表示できるようにしたいです。 関数は簡単なのはわかりますが、マクロはさっぱりなので コードや関数は解説つきで提示していただけると幸いです。 よろしくお願いします。

  • 例えばA1に入力した文字列や数字をB1に移動する方法はどうすればよいで

    例えばA1に入力した文字列や数字をB1に移動する方法はどうすればよいでしょうか? 色々検索したのですが見つかりませんでした。 本当に行いたいことはウェブページで以下のような文字列があるとします。 山田太郎[ヤマダタロウ] 〒000-0001 東京都千代田区 TEL:0000-00-0000 この文字列をドラックで文字列としてコピーしてエクセルのA5に貼り付けると 通常なら A5に山田太郎[ヤマダタロウ] A6に〒000-0001 A7に東京都千代田区 A8にTEL:0000-00-0000 になりますが A1に山田太郎 B1に000-0001 C1に東京都千代田区 D1に0000-00-0000 に移動されるようにしたいです。 これは[ヤマダタロウ]の文字列、〒、TEL:、のカットを行ったうえで移動させる必要があります。 何か方法があれば教えていただけると幸いです。

  • エクセルの関数を教えてください

    色々やってみたのですがどうしてもうまくいかないので教えてください。 Aのセルが"山田太郎"で、かつBのセルに数字が入っている(時間)セルの個数の出し方 A,B列とも範囲は決まっていません。 よろしくおねがいします。

  • 関数で文字の抜き出し方教えてください

    現在の状況では以下で使っています。 A列に下のセルがあったとして、 山田 太郎 半角スペースで区切って A列に =LEFT(A1,SEARCH(" ",A1,1)-1) で山田を抜き取り C列に =MID(C13,FIND(" ",C13)+1,LEN(C13)) で太郎を抜き取っています A1        B1    C1 山田 太郎    山田   太郎 しかし、 A1 佐藤 のように半角を使っていないものが#VALUEです。 A2        B2    C2 佐藤      #VALUE  #VALUE となります。 A2        B2    C2 山田 太郎    山田    太郎 佐藤      佐藤    NULL のようにスペースで区切られていないものを表示しつつ スペースで区切られているものは分けて表示させたいのですが ご教授おねがいします。

  • 隣のセルにふりがなを

    名簿を作成するのですが、隣のセルにふりがなを入れたいのですが A1 山田 太郎 A2 ヤマダ タロウ のように、A1を入力するとA2が出るようにしたいのですが 自分が横着しようとしているだけなのですが どなたかご教授下さい

  • エクセルのマクロ 【】の中だけ抽出〒と住所を分ける

    あるデータからコピペしてエクセルに並べ替えたいのですが 例えば 山田 太郎【やまだ たろう】 〒123-4567 東京都~ というデータをエクセルにペーストしました。 A2のセルには 山田 太郎【やまだ たろう】 A3のセルには 〒123-4567 東京都~ が入力されたとします。 それを B1とC1には 山田 太郎 D1には やまだ たろう E1には 123-4567 F1には 東京都~ を入れたいのですがマクロで出来る方法を教えて下さい。

  • 教えて下さい!!!excelの関数でふりがな(ひらがな)を表示する方法

    こんばんは。 タイトルの通り、名前の読み仮名を「ひらがな」にする関数を探しています。    山田 太郎 →ヤマダ タロウ(現時点)  山田 太郎 →やまだ たろう(理想)   このように、現時点でカタカナは出来るのですが(PHONETIC)、 それをひらがなにする式がわかりません。 (多分何らかの関数で出来ると思うのですが、、、) どなたかご存知の方がいらっしゃいましたら、教えていただきたいです。 どうぞよろしくお願いいたします。

  • Excelの作業で困っています。

    エクセルで、データをコード管理しているのですが、下記(山田太郎と田中花子)のように、同じ人でコード(C1)を2つ所有している場合があるので、重複しているのデータを探し出し、そのデータを削除する作業をしているのですが、5000件以上のデータがあるものですから、相当時間がかかってしまいます。何か関数とか使って処理する方法がないか教えてください。ちなみに今は、データの並び替えをして1件ずつ削除しています。     C1    C2       C3 R1  100  山田 太郎  ヤマダ タロウ R2  200  田中 花子  タナカ ハナコ R3  105  山田 太郎  ヤマダ タロウ R4  300  鈴木 次郎  スズキ ジロウ R5  250  田中 花子  タナカ ハナコ  

専門家に質問してみよう