• ベストアンサー

エクセル関数についての質問です。

エクセル関数ついて質問させていただきます。 あるデータにおいて 1 食品   (カレー、ラーメン、焼きそば・・・・) 2 化粧品  (口紅、マスカラ、ファンデーション・・・・) 3 飲料   (烏龍茶、緑茶、コーヒー、紅茶・・・・) と、グルーピングされています。 エクセル上に A列   B列 カレー   1 口紅    2 マスカラ  2 紅茶    3 焼きそば  1 マスカラ  2 ラーメン  1   烏龍茶   3 カレー   1      ・    ・  ・    ・  ・    ・ とデータが入っています。(B列の数字はそれぞれのグループの数字です。個数ではありません) そこで質問なのですが、 エクセルのセルD1に ”1”という数字を入力するとその下の行に自動的にデータにある”1”の項目(カレー、焼きそば、ラーメン)が表示されるにはどうしたらいいでしょうか?その際ダブっている項目は表示されてもされなくてもかまいせん。(できれば表示されないほうがいいです。) 例 カレー  (セルD4) 焼きそば  セルD5) ラーメン (セルD6) のようなイメージです。 業務に必要で困っています。どなたか詳しい方ご教授お願いいたします。<m(__)m>

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

  • ベストアンサー
  • 134
  • ベストアンサー率27% (162/600)
回答No.5

Z列に =IF(B2="","",IF(COUNTIF($B$2:B2,B2)>1,"",C2&"-"&COUNTIF($C$2:C2,C2))) という関数を入れ、 D1セルに1、2,3…を入力し、 A列のコードを D2,3,4,5…セルにリストアップするのであれば =IF(ISERROR(LOOKUP($D$1&"-"&ROW()-1,$Z$2:$Z$1000,$A$2:$A$1000)),"",LOOKUP($D$1&"-"&ROW()-1,$Z$2:$Z$1000,$A$2:$A$1000)) ですかね。 lookup文では、完全一致の引数指定がないので、iserrorでエラー回避の必要がなく、 =LOOKUP($D$1&"-"&ROW()-1,$Z$2:$Z$1000,$A$2:$A$1000) でも良いのかも知れませんけど。 関数の解説 Z列に入れようとしている関数は、リストアップに必要な個別のコードNo.を振っています。 ・商品名がなければ空欄 ・商品名が2回以上出てきたら、空欄 ・上記2つに当てはまらなければ、分類コードと分類コードが出てきた数を組み合わせた個別コードNoを振りなさい D列において、分類コードをD1に入れますので、それと分類コードの出てきた数をrow文にて自動発生させ、それを検索値として、vlookupまたはlookup文にて、検索範囲を指定して表示させるようにしています。 -> -> -> -> -> -> -> ->-> -> -> -> -> -> -> ->-> -> -> -> -> -> -> -> エクセルは、確かに独学です。 いくつかのHPや書籍で学び、PCでいろいろ組みました。 ここ「教えてgoo」におきまして、このような質問がいくつか出てきていると思いますが、index文とmatch文を組み合わせるのが得意な方の方法と 私めのvlookupの方法とが、登場するかも知れません。  vlookupを使う手法は、確かにオリジナルです。rowを検索値としvlookupが使えたら、並べ替えができるのではと、発想したのが発端です。使用するうちに応用範囲が広いかも知れない…と、重用しています。

piropiro101
質問者

お礼

134様 数日にわたり、ご丁寧なご回答本当にありがとうございました。おかげさまで問題も解決致しました。 それにしても、、独学でここまで知識を習得されたのには驚きです。私も少しずつではありますが頑張っていきたいと思います。 また、質問させていただくこともあると思いますがどうぞよろしくお願いします。

その他の回答 (4)

  • 134
  • ベストアンサー率27% (162/600)
回答No.4

詳しくないもので… 関数で条件に合うものをリストアップすることは、あまり容易ではありません。今回は特に重複したものを除くという条件まで加わっています。 このため、検索のための計算セル範囲を使用しました。 計算セルを1列使用しましたが、時には2列、3列になることもあります。 コードを使用して…とのアイディアですが、コードをリストアップするという条件でしたら、有効ですが、この質問の場合、商品名(?)のリストアップとなっていますので、特効薬になるという性質のものではないと思われます。 Z列に =IF(B2="","",IF(COUNTIF($B$2:B2,B2)>1,"",C2&"-"&COUNTIF($C$2:C2,C2))) という関数を入れ、 D1セルに1、2,3…を入力し、 B列の物の名前を D2,3,4,5…セルにリストアップするのであれば =IF(ISERROR(LOOKUP($D$1&"-"&ROW()-1,$Z$2:$Z$1000,$B$2:$B$1000)),"",LOOKUP($D$1&"-"&ROW()-1,$Z$2:$Z$1000,$B$2:$B$1000)) というふうにする方法もあるかもしれません。 ただし、この場合、関数を入力した部分において、最後の商品名が連続で表示されてしまいますので、条件付き書式で、すぐ上と同じ内容の時は、表示をセルの背景色に設定するなどの小技が必要になりそうです。 …おぼろげに、提示した関数がどういう働きをして、リストアップしえるのかを、ご理解いただけていないように感じていたり…!?

piropiro101
質問者

お礼

134様。おはようございます。 いつも的確なアドバイスありがとうございます。 >コードをリストアップするという条件でしたら、有効ですが とのコメントをいただきましたが、実はコードがリストアップさえできれば一番ありがたいのが本音なのです。もし、その解決方法があれば教えていただけないでしょうか? >…おぼろげに、提示した関数がどういう働きをして、リストアップしえるのかを、ご理解いただけていないように感じていたり…!? お恥ずかしい話です。 おっしゃるとおり、理解できていません。134様は独学で勉強されたのでしょうか?現在は基本的な関数中心にVBAを少し勉強している状態です。 もし、お時間がありましたら、D1のセルに数字の”1”を入力すれば 自動的にその下の行に 5005 9009 7007 5005←(これはできれば表示されないほうがありがたいです。ダブッテ    いますので。ただ、それが不可能ならば表示されてもOKで     す。) と表示させることができるのでありばご教授ください。<m(__)m> 私は都内在住ですが、今日は昨日よりは少し涼しい感があります。 お仕事頑張ってください。

  • 134
  • ベストアンサー率27% (162/600)
回答No.3

VLOOKUPがダメだったら、LOOKUPの適用でできそうに思います。

piropiro101
質問者

補足

134様おはようございます。昨晩はありがとうございました。 もし、お時間があればまた、ご教授お願いしたいのですが、 上記の元データにおいて A列   B列   C列   5005   カレー   1 6006   口紅    2 3333   マスカラ  2 2002   紅茶    3 9009   焼きそば  1 3333   マスカラ  2 7007   ラーメン  1   8888   烏龍茶   3 5005   カレー   1      ・    ・  ・    ・  ・    ・ と、実際には商品名の隣の列に4桁の商品コートがあります。(これは商品ごとにふってあり、カレーなら5005、マルカラなら3333であり、変化しません。) ひょっとしたらこのコードを活用できないかな、と考えています。 もし、お知恵を拝借できましたら、非常にありがたいです。 ご教授の程よろしくお願いします。<m(__)m>

  • 134
  • ベストアンサー率27% (162/600)
回答No.2

別に詳しくはないですけど… A列に1列挿入します。 A2セルに次のような関数を入れます。 =IF(B2="","",IF(COUNTIF($B$2:B2,B2)>1,"",C2&"-"&COUNTIF($C$2:C2,C2))) これをA列に適当な行数分、関数をコピーします。 D1セルをということですが、1列挿入したことにより E1セルに1、2,…と入力するとします。 E2セル以降に、リストアップするとします。 E2セルに次のような関数を入れます =IF(ISERROR(VLOOKUP($E$1&"-"&ROW()-1,A2:C10,2,0)),"",VLOOKUP($E$1&"-"&ROW()-1,A2:C10,2,0)) E3より下へ、適当な行数関数をコピーします。 A列は、非表示にしておいてください。

piropiro101
質問者

補足

134様御回答ありがとうございます。 早速試してみたところ完璧にできあがりました。 ただ、実際のデータですが、A列に一列挿入できるかどうかが現在確認できませんが、(現在自宅ということと、セルに色々な関数が入力されており一列挿入することにより弊害がでる可能性があるということです。)おそらくその可能性が非常に高いとかんがえられます。 もし、A列に挿入せずに、たとえばZ列を利用するなどの方法があればご教授願えないでしょうか?VLOOKUP関数を利用しているので難しいかなとは思いますが・・・。 ただ、本当に助かりました。ありがとうございます。<m(__)m>

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

ピボットテーブルはいかが?ちょっと変則的ですが、下記D1以下がピボットテーブルです。ページのフィールドに分類を、行のフィールドとデータアイテムの両方に品名をドラッグします。 ...............A...............B.......C.................................D......E ..1.........品名.........分類....................................分類......2 ..2.....カレー................1.................................................... ..3.........口紅...............2.........データの個数 : 品名........ ..4.マスカラ...............2....................................品名....計 ..5.........紅茶...............3............................マスカラ......2 ..6.焼きそば................1....................................口紅.......1 ..7.マスカラ...............2....................................総計......3 ..8.ラーメン................1.................................................... ..9.....烏龍茶...............3.................................................... 10.....カレー................1.................................................... E2で分類番号を選ぶと、該当する品名が表示されます。

参考URL:
http://kokoro.kir.jp/excel/pivottable.html
piropiro101
質問者

お礼

mitarashi様、早速の御回答ありがとうございます。 おっしゃる通りピボットテーブルは一つの手ですね。ただ、できることなら関数で処理できないかなと考えています。というのは実際のエクセルシートには商品のデータの上のセルに他のデータが入力されていて中々うまくいかないようなのです。 非常に丁寧で分かりやすい御回答感謝します。<m(__)m>

関連するQ&A

  • エクセル関数の質問です。

    エクセルでセルA1=4の場合セルB2=セルD1、セルA1=5の場合セルB2=セルE1、セルA1=6の場合セルB2=セルF1というように、セルA1に数字を入力するとセルB2に反映するようなセルB2に入力する関数を教えて下さい。  セルA1には月(4月から3月)の数字(4~12、1~3)が入り、4月のときにはD列(D1)、5月のときにはE列(E1)、6月~3月にはF列(F1)~O列(O1)の数字が入ります。よろしくお願い致します。

  • Excelの関数について

    D列のセルにパーセントの数字が入っております。 この数字を隣のセル(E列)に分類分けをして 抽出したいのですが、可能でしょうか。 Excel2000を使っております。     D列     E列 1    28%     1 2    34%     2 3    38%     3 4    46%     4 「分類わけ内訳」 ★  30%未満        → 1 ★  30%~35%未満   → 2 ★  35%~40%未満   → 3 ★  40%以上        → 4 よろしくお願い致します。

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

    以前ここで質問をさせていただきました(下記アドレス参照) http://okwave.jp/qa/q8033425.html それでデータシートD列に数字を入力し、それを表示させるようにと質問をしてそれは解決したのですが、今度は数字ではなく文字(名詞)を表示をさせたいと思うのですが、単純に今まで数字を入力していたセル(D列)に名称を入れたところ「0」が表示されてしまいます。 文字(名詞)を表示させるためにはどのようにすればいいのでしょうか?

  • エクセル関数の詳しい方ご教示ください。

    エクセルの詳しい方、ご教示ください。 A B C D E F G(表示したい列) 1行目 2 3 5 7 9 2 =知りたい関数 2行目  4 5 8 9 1 2 上記のようなランダムな数値データがあり、 ・Aの列に表示している数字の数だけ、 ・Bから右の列に移動した数字を、 ・Gの列に表示したい と、思っています。 例で考えると、 G1のセルは7 G2のセルは2 と表示されるイメージです。 Gにはどのような関数を使えばよいでしょうか?

  • エクセルの関数についての質問です

    エクセル2010で A1のセルに「○」が入力されると +3 A2・A3・A4 のセルはどこか一箇所にでも○が入れば、1を足します。 二箇所、三箇所に入っても 1しか足しません。 その合計数をBの列に表示させるようにしたいのです。 Bの1~4のセルは結合されています。 すべてに○が入った場合は、B列の数字は 3+1=4 A1にしか○が入らなかった場合のB列の数字は3になります。 3+0=3   A   B   1 ○ 2 ○ 3     4 4 ○   ○が入れば、3を足す  一箇所にでも入れば1を足す それぞれ別の関数は出来たのですが ふたつの条件の合計を出す式が出来ません。 非表示の列を作って、そこにまずは別々に数字を出して それを合計させる手もあると思うのですが 列を増やしたりせずに、関数だけで、B列に数字が入るようにしたいのです。 うまく伝わりますでしょうか どうぞよろしくお願いします。

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

    エクセルの関数を教えてください。 あるセル(列単位です)に数字8ケタが入っていたら隣のセル(列)に◎◎◎(任意に設定)と表示されて、なにも入力されていなかったら空白表示にしたいのですがどうすればいいでしょうか?

  • エクセル関数について

    こんばんは。 エクセル関数に関して、質問させてください。 今現在、エクセルであるデータを作っているのですが、 そこに例えばB2セルに東京、C2セルに3という数字が、またB3セルに大阪、C3セルは空欄になっているとします。 そこで、C列に数字が入っている場合のみ、B列の都道府県名と、それに対応するC列の数字を他のシート(同じシートでも可)に書き出すようにしたいのですが、そのような関数はあるのでしょうか。 最終的には、マクロを組んで、自動化させたいのですが… 長々と申し訳ありませんが、よろしくお願いいたします。

  • エクセル関数の質問

    エクセルで、その列のセルにいろいろな数字10が入っています。 その中で例えば「2」となっているセルが5あるとします。 「2」と入っている数が何%かを出すことはできますか。 この例の場合、数字が10セル並んでいて、「2」の入っているセルが 5セルある場合、50%なわけですが、それを関数で計算できますか。

  • エクセル関数の質問です。

    エクセル関数の質問です。 エクセルで、A~Cの列には値が入っています。 A列のセルに「あいうえお…」等の各文字がランダムな順番で入っています。 B列には、A列に対応する数字の値が入っています。 C列には、「あいうえお…」等の各文字がA列とは異なる順番で入っており、 D列に、A列に入っているそれぞれの文字に対応するB列の値を入れたいのです。 ▼最終的にはこういう感じです。 A列 B列 C列 D列 お  12  あ  31 え  25  い  50 あ  31  う  43  う  43  え  25   い  50  お  12 C列の順番は動かさずに、D列に値を入れたいのですが、 良い方法がありましたら、アドバイスをいただけますでしょうか。 どうぞよろしくお願い致します。

  • エクセルの数式をどのように入れたら良いでしょうか?

    エクセルの数式をどのように入れたら良いでしょうか? いつもこちらでお世話になっています。 今回も教えて頂きたく質問させていただきます エクセルについてですが、 sheet1に入っているデータを sheet2に入力するようにしたいのですが sheet1の A列に1~50までのNo. →A1セルにNo.1、A50セルにNo.50 B列に(1)データ C列に(2)データ があり sheet2の D5のセルに「1」と入力すれば、sheet1!A列の数字とリンクしてsheet!B1の(1)データが入り D6のセルに「10」と入力すれば、Sheet1!A列の数字とリンクしてsheet!C10の(2)データが入る ように設定し、 さらにsheet2のD5,D6のセルに上書きで(繰り返し)数字を入力させ 数式が消えないようにしたいのですが どのようにすればよいでしょうか? 分かりずらい説明で申し訳ありませんが 大変困っているので、アドバイス頂けると助かります。

専門家に質問してみよう