ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュの文字列から(優先順位に沿って)文字の抽出

  • mixiチェック
  • このエントリーをはてなブックマークに追加
いつも、いつも、本当にお世話になっています

A1には「みかん 5個 りんご 1個 ぶどう 8個 すいか 3個」
A2には「ぶどう 2個 みかん 3個」
A3には「りんご 2個 ぶどう 5個 すいか 1個」
A4には「りんご 2個 すいか 1個 みかん 3個 ぶどう2個」
と、「」の中の文字列が入力されています
品物と個数の間には半角スペース、品物の前には全角スペースがはいっています。

優先順位を みかん<りんご<ぶどう<すいか として
A1からは「すいか 3個」
A2からは「ぶどう 2個」
A3からは「すいか 1個」
A4からは「すいか 1個」
となるような関数(VBA?)をつくりたいのですが可能でしょうか?
そうであれば、(すこし都合の良すぎる質問だと思うのであせあせ)ヒントだけでもありがたいです。

品物の個数も出ればベストですが、品物の表示だけでもできれば大いに助かります。

よろしくおねがいします。

コメント(6)

この課題に対して解決策は思い浮かびません。ヒントになるのかも自信がありませんが、気が付いたことだけを書きます。

少なくともひとつ言えそうな事は、ひとつのセルに複数の要素が入力されていたら、きっと何もできないような気がします。

だから
「みかん 5個 りんご 1個 ぶどう 8個 すいか 3個」
を、
A1:「みかん 5個」
B1:「りんご 1個」
C1:「ぶどう 8個」
D1:「すいか 3個」
と、A列からD列までに分割するのが、もしかすると先決かも。

で、そのあとどうするの?と言われても、わたしにはそこまで知恵が回りません。

分割の方法は、多分これでできるはず。

一旦エクセルファイルをテキストファイルにして、全角スペースをセルの区切れ目にしてもう一度エクセルファイルにする。


中途半端ですが、「何もコメントがつかないよりはマシ」程度に思ってください。スミマセン。
=IF(ISNUMBER(FIND("すいか",A1)),MID(A1,FIND("すいか",A1),FIND("個",A1,FIND("すいか",A1))-FIND("すいか",A1)+1),IF(ISNUMBER(FIND("ぶどう",A1)),MID(A1,FIND("ぶどう",A1),FIND("個",A1,FIND("ぶどう",A1))-FIND("ぶどう",A1)+1),IF(ISNUMBER(FIND("りんご",A1)),MID(A1,FIND("りんご",A1),FIND("個",A1,FIND("りんご",A1))-FIND("りんご",A1)+1),IF(ISNUMBER(FIND("みかん",A1)),MID(A1,FIND("みかん",A1),FIND("個",A1,FIND("みかん",A1))-FIND("みかん",A1)+1),""))))

こんな感じでどうです?
b1=
IF(COUNTIF(A1,"*すいか*"),"すいか",
IF(COUNTIF(A1,"*ぶどう*"),"ぶどう",
IF(COUNTIF(A1,"*りんご*"),"りんご",
IF(COUNTIF(A1,"*みかん*"),"みかん"))))

C1=
=LEFT( RIGHT(A1,LEN(A1)-LEN(B1)-FIND(B1,A1)),FIND("個",RIGHT(A1,LEN(A1)-LEN(B1)-FIND(B1,A1)))-1)

これでb1に品名、c1に個数が抽出されます。
(ちなみに上の回答は、別のmixiトピに出てきた方法を参考にさせていただきました。
if関数中でcountifと*を使うというばりおすさんの方法と、if関数の中で改行するというGoldenさんの方法です。
ありがとうございました)
皆さんありがとうございます。
ISNUMBER関数ははじめて見ました。(持っている本にも載ってないですふらふら)
とりあえず検証して、間違いなく期待通りの値ですが、理解するには時間がかかりそうです。冷や汗
IF関数を何かと組み合わせて重ねていけば、出来そうだとは何となく思っていたのですが、やり方が複数出てくるとEXCELで出来ないことは無い様な気すらしてきます。
これからもよろしくお願いします。
EXCELで出来ないことは無いと信じています♪

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。