• ベストアンサー

【Excel】データベース関数

B列が0以外の商品名と個数が、C列D列に自動的に出てくるようにしたいです。 何関数を使うのが適切でしょうか??宜しくお願いいたします。 A列   B列  C列   D列 エノキ  0個  バナナ  8個 バナナ  8個  りんご  5個   りんご  5個 なすび  0個

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

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.2

こんにちは~ ちょっと確認ですが、B列のデータは直接 0個のように入力しているのでしょうか? ◆ B列をすべて選択して、メニュー「書式」-「セル」-「表示形式」タブ 「分類」から <ユーザー定義>を選び、右の「種類」欄に 0個 と入力しておけば、0、5 と入力するだけで、自動的に 0個、5個と表示されるので便利かと思います。 データが 2行目から始まっているとします。 ■作業列を使う方法です。 作業列はどこでもかまいません。ここでは仮に F列を作業列とします。 ◆上に書いたように、B列の設定を変更できるのなら ★ F2に =IF(B2>0,ROW(),"") ◆いまさら B列を変更できないなら ★ F2に =IF(B2>"0個",ROW(),"") と入れてみてください。( 数字が全角だとして。数字が半角なら、0を半角にすること! ) F2セルの数式を、A列のデータ最終行までフィルコピー 今後もデータが増えつづけるのでしたら、予想される最大行まであらかじめコピーしておいてください。 ★ C2に( コピー&ペーストしてください ) =IF(COUNT($F:$F)<ROW(A1),"",INDEX(A:A,SMALL($F:$F,ROW(A1)))) と入れ、そのまま右の D2にフィルコピー C2:D2 の数式を、該当データの予想最大数分、下にフィルコピーしてください。 該当データが最大 20個だと思えば、C21:D21までフィルコピー ◆ 作業列を F列以外にする場合は、$F:$F( 2ヶ所 )をその列記号に変更してください。( 絶対参照にすること! ) ◆ ROW(A1) の A1はそのままにしておいてください。 ( 最初に数式を入れる C2セルだけです。あとは右に下にコピーするだけで OK ) ◆ B列の設定を最初に書いたように変更した場合は、数式を入力後、D列の表示形式も同じように設定してください。

mondamintmint
質問者

お礼

ていねいにご回答ありがとうございます!助かります!! B列のデータは手入力です。書式の方法まで教えて頂いてありがとうございます。 この方法は他にも応用できそうですね♪ shiotan99さんの方法でシートを作成してみたら見事に動きました。 実は、一度に簡単にできちゃうような関数はないかと思案していたのですが、 やはり、IF関数・INDEX関数と作業列を使うしか、方法はないのかな…?(・∀・;) 他にも何か方法があったら、教えていただけるとありがたいです☆

mondamintmint
質問者

補足

私がまだ未熟者なので、もっと簡単にできる関数もあるんだと勝手に思っていましたが、、、 shiotan99さんの関数を見ていたら、とっても高度な関数を使ってると感じました。 もしかしたら、これ以上のものはできないのかもしれませんね。 shiotan99さん、重ねてお礼申し上げます。

その他の回答 (1)

  • fukkyse
  • ベストアンサー率32% (130/402)
回答No.1

0個のものを含んでよいのならばピボットテーブルなのですが…。

mondamintmint
質問者

お礼

うーん、今回は0個のものは含みたくないみたいです^^; ご回答ありがとうございました。