• ベストアンサー

Excel買い物見積書を作成したいVLOOKUP?

個人的な買い物のために、Googleドライブのスプレットシートで表を作成しています。 買うものの候補の表を作り、買うものは「買」など入力する欄をつくり、 (チェックボックスがいいのですが、Googleドライブにはその機能がないようです。) 「買」と入力したものだけ見積もり表に表示、合計したいのですが、 VLOOKUPとIF関数を使ってみましたが、うまくいきません。 SUMIFでも事足りますが、買う予定のものだけの表を作りたいです。 何かいい方法はありませんか?よろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

Googleスプレッドシートはエクセルではありません。 >チェックボックスがいいのですが、Googleドライブにはその機能がないようです。 エクセルには無い、遥かに便利な関数を使ってご相談の事も一発解決です。 添付図: A5セルに =filter(F5:F15,$E$5:$E$15="買") と記入。該当するデータが勝手にフィルタされて記入される A5をコピー、右のB5,C5に貼り付け 以上で完成です。 6行目以下は全く触る必要ありません。 「買」を付け替えると勿論自動で追従します。

noname#231536
質問者

お礼

回答ありがとうございます。 シンプルで、私にも使いこなせそうな関数です。 エクセルにない機能があったのですね。大変勉強になります。

noname#231536
質問者

補足

>Googleスプレッドシートはエクセルではありません。 理解はしていますが、表計算ソフトの代名詞として表記しました。 混乱させて申し訳ありません。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

>Excel買い物見 >Googleドライブのスプレットシート と相反する質問になっているがどうしたのか。 ーー 例 品物「りんご」を抜き出してみる Sheet1 品物(A列) 代金 (B列) 該当連番(D列)<--第2行 りんご 300 1 梨 400 バナナ 200 いちご 500 りんご 200 2 りんご 250 3 該当連番の列のD3の式は =IF(A3="りんご",MAX(D$2:D2)+1,"") 下方向に式を複写 ーー Sheet2 A列A2には =INDEX(Sheet1!$A$2:$B$100,MATCH(ROW()-2,Sheet1!$D$2:$D$100),COLUMN()) 下方向に3行複写。 B列はA1:A3を右方向に式複写。 B2は =INDEX(Sheet1!$A$2:$B$100,MATCH(ROW()-2,Sheet1!$D$2:$D$100),COLUMN()) となっている。 結果 Sheet2 品物 代金 りんご 300 りんご 200 りんご 250 合計ならB列でSUM関数をいれればよい。 上記は原理を説明しているが、該当3行を超える行にには空白にするための関数部分を省いて簡単にしている。 ーーー 質問者は簡単に質問しているようだが、データ抜出し方法は奥が複雑。 データ抜出し方法は (1)操作 フィルタで行う。背後にある表計算ソフトのプログラムが走るわけである。 (2)VBAでやる。全行処理で、IF文を使って簡単なプログラムでできる。 (3)ワークシート関数で行う。 定型的な処理をするものである関数を使って、目的を達成する。 関数はデータの抜出には向いてない。 関数ではむつかしくなる原因は、該当データを望みのセルに投げられないことにある。 関数を入れたセルにしかデータが返らないしくみだから。 VBAはそれができる。 関数でやる場合、 (A)作業列を使う方法  --上記はこの1方法 (B)使わない方法  (あ)通常関数の方法  (い)配列数式を使う――説明略 (あ)の式は長くむつかしいものになる。独力で作り出すのはできないでしょう。仕組みの理解さえもおぼつかない人がほとんどでしょう。しかしコピペして少々修正して、うまく行った、としている人も多かった。 ーー 以前は、エクセルの質問コーナーで、1月に数度、関数による「抜出し」問題の質問があった。関数でやりたいらしい者が多いようだったが、フィルタでやればよいのにと思う。 WEBで「imogasi方式」で照会すれば、OKWAVEの回答で、作業列を使う上記のような記事が出てくる。 私以外の回答者の回答(Bの(あ)のタイプなど)も出てくる。

noname#231536
質問者

お礼

回答ありがとうございます。 >相反する質問になっているがどうしたのか。 表計算ソフトの代名詞みたいなイメージなので、スプレットシートと書くよりわかりやすいと思い、エクセルと表記しました。混乱させて申し訳ありません。 >フィルタでやればいいのに フィルタでやらなかったのは、SUBTOTAL関数を知らなかったためです。 詳細な回答ありがとうございます。 さまざまな方法があるのですね。今後参考にさせていただきます。

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

 I列を作業列として使用するものとして、まず、I5セルに次の関数を入力して下さい。 =IF($E5="買",ROW(),"") 或いは =IF(INDEX($E:$E,ROW())="買",ROW(),"")  次に、I5セルをコピーしてI6以下に貼り付けて下さい。  次に、A5セルに次の関数を入力して下さい。 =IF(ISERROR(1/(INDEX($F:$H,SMALL($I:$I,ROWS($4:4)),COLUMNS($A:A))<>"")),"",INDEX($F:$H,SMALL($I:$I,ROWS($4:4)),COLUMNS($A:A)))  次に、A5セルをコピーしてA5~C15の範囲に貼り付けて下さい。  以上です。

noname#231536
質問者

お礼

回答ありがとうございます。 こんなに複雑な関数になるのですね。

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.2

作業列を設ける方法、配列数式を使用するよりお勧めです。 I列に作業列 I5式 =if(E5="買",row(),"") 下方へオートフィル A5式 =if(count($I:$I)<row(A1),"",index(F:F,match(small($I:$I,ROW(A1)),$I:$I,0))) A5式を必要範囲までコピー

noname#231536
質問者

お礼

回答ありがとうございます。 こんなに複雑な関数になるのですね。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

見積もり表に「買」と記入した列にフィルター機能を付けて、「買」と記入した行のみ合計してはいかがでしょう。合計はSUBTOTAL関数を使ってみてください。

noname#231536
質問者

お礼

回答ありがとうございます。 とてもシンプルでわかりやすく、すぐに理解できました。 ただ、候補の表と見積もりの表を別にしたいので、 参考までにさせていただきます。

関連するQ&A