こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

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

個人的な買い物のために、Googleドライブのスプレットシートで表を作成しています。

買うものの候補の表を作り、買うものは「買」など入力する欄をつくり、
(チェックボックスがいいのですが、Googleドライブにはその機能がないようです。)
「買」と入力したものだけ見積もり表に表示、合計したいのですが、
VLOOKUPとIF関数を使ってみましたが、うまくいきません。

SUMIFでも事足りますが、買う予定のものだけの表を作りたいです。
何かいい方法はありませんか?よろしくお願いします。

投稿日時 - 2016-01-04 16:35:26

QNo.9105973

困ってます

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

Googleスプレッドシートはエクセルではありません。
>チェックボックスがいいのですが、Googleドライブにはその機能がないようです。

エクセルには無い、遥かに便利な関数を使ってご相談の事も一発解決です。



添付図:
A5セルに
=filter(F5:F15,$E$5:$E$15="買")
と記入。該当するデータが勝手にフィルタされて記入される
A5をコピー、右のB5,C5に貼り付け
以上で完成です。

6行目以下は全く触る必要ありません。
「買」を付け替えると勿論自動で追従します。

投稿日時 - 2016-01-04 23:04:57

補足

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

投稿日時 - 2016-01-05 12:37:01

お礼

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

投稿日時 - 2016-01-05 12:35:44

ANo.5

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(5)

ANo.4

>Excel買い物見
>Googleドライブのスプレットシート
と相反する質問になっているがどうしたのか。
ーー

品物「りんご」を抜き出してみる
Sheet1
品物(A列)代金(B列) 該当連番(D列)<--第2行
りんご3001
梨400
バナナ200
いちご500
りんご2002
りんご2503
該当連番の列の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の(あ)のタイプなど)も出てくる。

投稿日時 - 2016-01-04 22:53:11

お礼

回答ありがとうございます。

>相反する質問になっているがどうしたのか。
表計算ソフトの代名詞みたいなイメージなので、スプレットシートと書くよりわかりやすいと思い、エクセルと表記しました。混乱させて申し訳ありません。

>フィルタでやればいいのに
フィルタでやらなかったのは、SUBTOTAL関数を知らなかったためです。

詳細な回答ありがとうございます。
さまざまな方法があるのですね。今後参考にさせていただきます。

投稿日時 - 2016-01-05 12:32:44

-広告-

ANo.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の範囲に貼り付けて下さい。

 以上です。

投稿日時 - 2016-01-04 17:44:40

お礼

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

投稿日時 - 2016-01-05 12:26:17

ANo.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式を必要範囲までコピー

投稿日時 - 2016-01-04 17:19:46

お礼

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

投稿日時 - 2016-01-05 12:26:11

ANo.1

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

投稿日時 - 2016-01-04 16:49:41

お礼

回答ありがとうございます。
とてもシンプルでわかりやすく、すぐに理解できました。

ただ、候補の表と見積もりの表を別にしたいので、
参考までにさせていただきます。

投稿日時 - 2016-01-04 18:59:03

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-