- ベストアンサー
Excel買い物見積書を作成したいVLOOKUP?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
>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の(あ)のタイプなど)も出てくる。
お礼
回答ありがとうございます。 >相反する質問になっているがどうしたのか。 表計算ソフトの代名詞みたいなイメージなので、スプレットシートと書くよりわかりやすいと思い、エクセルと表記しました。混乱させて申し訳ありません。 >フィルタでやればいいのに フィルタでやらなかったのは、SUBTOTAL関数を知らなかったためです。 詳細な回答ありがとうございます。 さまざまな方法があるのですね。今後参考にさせていただきます。
- kagakusuki
- ベストアンサー率51% (2610/5101)
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の範囲に貼り付けて下さい。 以上です。
お礼
回答ありがとうございます。 こんなに複雑な関数になるのですね。
- dogs_cats
- ベストアンサー率38% (278/717)
- aokii
- ベストアンサー率23% (5210/22062)
見積もり表に「買」と記入した列にフィルター機能を付けて、「買」と記入した行のみ合計してはいかがでしょう。合計はSUBTOTAL関数を使ってみてください。
お礼
回答ありがとうございます。 とてもシンプルでわかりやすく、すぐに理解できました。 ただ、候補の表と見積もりの表を別にしたいので、 参考までにさせていただきます。
お礼
回答ありがとうございます。 シンプルで、私にも使いこなせそうな関数です。 エクセルにない機能があったのですね。大変勉強になります。
補足
>Googleスプレッドシートはエクセルではありません。 理解はしていますが、表計算ソフトの代名詞として表記しました。 混乱させて申し訳ありません。