- ベストアンサー
エクセルの質問です。
エクセルの質問です。 すみません、色々調べたのですが 判らなくて。。。 どなたか、教えてください。 たとえば A1のセルの1つの中に ハンバーグ100g¥100Sサイズ とある場合に、 B1セルに100g C1セルに¥100 D1セルにSサイズ と、コピーしたいのですが、何か 良い数式 はありますでしょうか? CONCATENATE関数の逆のことが出来れば ベストなのですが。。。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
データ入力際の一定の規則が無いと回答のしようもありませんが仮に商品の名前の後に重さが100gのようにあり、価格は¥で始まる数値になっているとします。 そこで重さは10gから9999gまで、価格は¥10から¥9999までを考慮した式を示しますので、それらの式を参考にしてご自分のデータに合った式にして利用してください。 CONCATINATE関数の逆のことを行うにはMID関数などを使うことになりますね。 B1セルには次の式を入力します。 =IF(ISNUMBER(MID(A1,FIND("g",A1)-4,4)*1),MID(A1,FIND("g",A1)-4,5),IF(ISNUMBER(MID(A1,FIND("g",A1)-3,3)*1),MID(A1,FIND("g",A1)-3,4),IF(ISNUMBER(MID(A1,FIND("g",A1)-2,2)*1),MID(A1,FIND("g",A1)-2,3),""))) C1セルには次の式を入力します。 =IF(ISNUMBER(MID(A1,FIND("¥",A1)+1,4)*1),MID(A1,FIND("¥",A1),5),IF(ISNUMBER(MID(A1,FIND("¥",A1)+1,3)*1),MID(A1,FIND("¥",A1),4),IF(ISNUMBER(MID(A1,FIND("¥",A1)+1,2)*1),MID(A1,FIND("¥",A1),3),""))) D1セルには次の式を入力します。 =MID(A1,FIND(C1,A1)+LEN(C1),10) なお、これらの式を入力しても空白のままの状態でしたら検索のキーワードであるgや¥が式で使われているのとA1セルに有るものとが一致していないことが考えられます。一方は半角文字で他方は全角文字などがあります。注意が必要ですね。
その他の回答 (3)
- MackyNo1
- ベストアンサー率53% (1521/2850)
このようなご質問では、文字列の区切り位置の基準を明確にする必要があります(エクセルに区切り位置を判断させるには必須)。 また、文字列の例を「たとえば」でデータ例を1つだけ提示するのではなく、できる限り実際のデータ例を正確に提示しないと、分割の基準が推定できないため最も効率的な数式が提示できないなど、結果として回答者に無駄な回答をさせることになりますので、実際のデータ例を複数例示して分割したいパターンをできる限り具体的に提示するようにしてください。
お礼
ご教授、大変ありがとうございます。 区切り線をつけることによって、問題解決しそうです。 不安定な質問内容にも関わらず、ご指摘大変ありがとうございました!!
- mhassy
- ベストアンサー率43% (16/37)
質問で提示している「文字の切り出し条件」が、あまりにも曖昧すぎます。 質問文章をそのまま読む限りでは、「midなどで切り出すだけで済む」安易な回答しか提示できません。 例えば、 ・「100g」などの文字の位置(例えば左から何文字目)が固定なのか? そうではないのか? ・切り出す「文字数」は常に同じ数なのか? ・グラム、金額、サイズ、 並びは全て同じ順序なのか? などなど、挙げればキリが無いほどに「不明な点」が多すぎです。 むしろ、明確になっている点が「無い」とも言える説明です。 折角質問をして、回答者の皆さんに読む手間を取らせることまでするのですから、相手にきちんと質問内容が伝わるように、内容を作成して質問しましょう。 >何か 良い数式 以前に、どういった(具体的な)条件を満たしているものが良いのかすら、現在の質問からは推測出来ません。 補足する説明にまで疑問を持たれない様に、きちんとした補足をするかなにかしましょう。 きつい指摘で気の毒ですが、質問の仕方を教わる場所ではなく、きちんとした質問へ無償の善意で助言してもらうサイトです。
お礼
ご指摘、大変ありがとうございます。 おっしゃるとおり、確かに質問が曖昧なようでした。 幅広く、問題解決の糸口がわかればと思い、 シンプルな質問を心がけたのですが、言葉たらずで逆に お手間とらせてしまい、大変失礼いたしました。 以後、注意して質問してまいりたいと思いますので、 お許し願えたら、幸いに思います。 改めて、申し訳ございませんでした。
- keithin
- ベストアンサー率66% (5278/7941)
>CONCATENATE関数の逆のことが出来れば どこで区切ったらいいのか,いったいどんな「ルール」で区切ればいいのか,あなたが今ヤリタイ事をご自分で説明が出来る(説明が付く)かどうかに,全てがかかっています。 ●ケース1,あなたがルールに従って区切る 例: 「ハンバーグ100g¥100Sサイズ」 を 「ハンバーグ 100g ¥100 Sサイズ」 のように区切り利文字(例えばスペース)をあなたが手で挿入し,「スペースで区切りなさい」というルールに従ってエクセルに区切らせる。 例えば(Excel2003までは)データメニューの区切り位置を使う。 ●ケース2:文字列のパターンを約束にする。 ・1番目は言葉で数字の前まで ・2番目は数字から¥の前まで ・3番目は¥から数字 ・4番目は数字の後ろの言葉 このパターン以外はダメだと決める。 A1に ハンバーグ100g¥100Sサイズ B1に =LEFT(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")-1)) C1に =SUBSTITUTE(LEFT(A1,FIND("¥",JIS(A1)&"¥")-1),B1,"") D1に =MID(A1,LEN(B1&C1)+1,LEN(A1)-LEN(B1&C1&E1)) E1に =MID(A1,MAX(IF(ISNUMBER(-MID(A1,ROW(A1:A30),1)),ROW(A1:A30)))+1,10) このE1だけ式を記入したら必ずコントロールキーとシフトキーを押しながらEnterで入力する。 #ブラックボックスで使ってください。説明しはじめるときりがないのでご容赦。 #「実は嘘でしたホントはこうでした」の場合は全く違う式をまた最初から組み立てる事になります。もしそういう事になりそうなら,やはりケース1であなたが判りやすい区切り文字をデータに書き足していった方がよいでしょう。
お礼
早々の、ご丁寧なご回答と、ご指摘、大変ありがとうございます。 早速、区切り線と、教えていただいた数式を参考にさせていただきましたところ、 問題解決出来そうです。 曖昧な、質問内容にも関わらず、ご尽力いただきまして嬉しいかぎりです。 改めて、ありがとうございました!!!!
お礼
ご丁寧なご教授、大変ありがとうございます!! なるほど、MID関数を使用するのですね。 大変、参考になりました!! 早速、試してみたところ、上手く行きそうです。 感謝いたします!! 重ね重ね、ありがとうございました!!