• ベストアンサー

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

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

noname#231536
noname#231536

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答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/17068)
回答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

  • EXcel2007のVlookup関数について

    EXcel2007のVlookup関数のフォント表示について教えて下さい。 返される値は数字なのですが、もとの表は「条件付き書式」で、フォントに色が付いています。 普通に関数入力しただけでは、数字だけが返されてきて、「色」が反映されません。 「色」も含めて、返してもらうためには、どのように入力すれば良いのでしょうか?

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

    =IF(ISERROR(VLOOKUP(B2,$E$1:$F$296,2,FALSE)),"",VLOOKUP(B2,$E$1:$F$296,2,FALSE)) という関数を入れて、品番をセルに入力して元表から品名を導く表を作成しました。うまく使えています。 これを元に =IF(ISERROR(VLOOKUP(B2,$F$1:$I$1000,2,FALSE)),"",VLOOKUP(B2,$F$1:$I$1000,2,FALSE)) という関数に直して、同じような表を作ろうとしたのですが、うまくいきません。 何が悪いのか分かりません。 どうすればうまくいきますでしょうか?

  • Excel2007 VLOOKUP関数の相談

    もし検索不足で重複した質問でしたら申し訳ありません。 VLOOKUP関数について、シート「A」に文字列を入力したら シート「リスト」シート上に同じ文字列があれば その文字列関係の情報を持ってくるというVLOOKUP関数を使用していました。 <使っていた関数> =IF(ISERROR(VLOOKUP(H306,リスト!A:B,2,0)),"",VLOOKUP(H306,リスト!A:B,2,0)) この入力する文字列が数字(別データからコピーして貼り付ける)に変わっただけなのですが、 何故か対象情報の抽出をしてくれません。 <使おうとしている関数> =IF(ISERROR(VLOOKUP(I2,データ0501!A2:F695,3,0)),"",VLOOKUP(I2,データ0501!A2:F695,3,0)) ネットで検索したのですが、関数情報が不足しているのか、 コピーした数字列の貼り付け方が間違っているのかわからない状況です。 恐れ入りますが解決策があればお教えいただければと思います。 どうぞ宜しくお願い申し上げます。

  • vlookupにつきまして

    こんにちは、教えてください。 以下のような表をつくっています。     A     B      C      D       E 1 商品コード 商品名  100枚   1000枚 10000枚 2  1      赤      10       9       8 3  2      青      11       10        7 4  3      黄       12       11        6 赤という商品を100枚発注すると単価は10円ですが、1000枚発注すると9円になるという表です。 現状はvlookup関数を使用して「1」という商品コードを入力すると「赤」と表示 させ、その後に「1」と「1000枚」という情報を入力 すると 「9円」という単価まで自動表示させてしまう表を作成 したいと思っています。 もし縦横読む関数がありましたら教えてください。 =IF(A29="","",VLOOKUP(A29,sheet1!$D$5:$E$154,2,FALSE)) 現状はこの関数を使用しています。この関数だと単価は手入力と なってしまい作業効率が悪く、金額齟齬のおそれがありますので是非 宜しくお願いします。

  • VLOOKUPで名前が使えない

     XP,2007pack3ユーザーです。 表に名前を付け、VLOOKUP関数の「範囲」の代名詞として使いたいと思います。 セル上にVLOOKUP の要素を記入してゆき、「範囲」の所で名前ボックスを開きますと、以前に使った関数が羅列され、表の名前が表示されません。 関数を記入していないときは名前が表示されるのですが、いざVLOOKの要素を書き込もうとすると逃げてしますのです。 仕方がないから、表の範囲を反転表示で指定してやっておりますが、どうも納得がゆきません。 そこで教えていただきたいのです。 Q1 関数要素記入時に、お名前ボックスから表の名前を使う方法 Q2 お名前ボックスに既往の関数名を入れない方法(私には、お名前ボックスに既往関数の表示は 有害・不要です。) 以上、よろしくお願いします。

  • Excel2003の関数のネストの入力方法

    Excel2007のテキストでExcelを学んでしまったので、Excel2003の使い方が分からないので質問させて頂きます。 例えば、セルA1に入力されているVLOOKUP関数にエラーの場合、空白にするIF関数をネストさせたいのですが、Excel2007のテキストでは、関数をネストさせるのに、数式バーの左端の関数ボックスの▼をクリックし、関数を選択して、関数の引数ダイアログボックスでネストすることができたのに、Excel2003では、同じ操作をするとVLOOKUP関数が消えてしまい、IF関数しか入力できないのですが、Excel2003では、ネストさせる関数は、直接入力しないといけないのでしょうか?

  • MSアクセスにおけるSUMIF関数やIF関数、VLOOKUP関数について

    アクセスにおいてエクセルでいう、SUMIFやIFやVLOOKUPなどに類似(もしくは同じ)関数はありますか? もしもあるとしたら、使用方法などアドバイス頂けたら嬉しいです。 宜しくお願いします。

  • Excel2007でのデータ抽出

    前任者が作ったExcelでの給料計算表を使用していますが、先日そこに金種計算表を組み込めないかと言われました。 当方VBAなどは全くの初心者です。 VLOOKUP関数を使ってデータテーブルから金額を読み込み金種計算が出来るようにはしてみたのですが、データテーブルを更新すると金種計算表にある数式がエラーを吐いてしまいます。 金種計算表には一行目から =IF(B4="","",VLOOKUP(B4,テーブル!D4:BG4,10)) と関数を入れてあります。 B4は氏名欄です。 その際にはちゃんと金額が表示されていますが、入力フォームからデータテーブルを更新すると =IF(B4="","",VLOOKUP(B4,テーブル!#REF!,10)) となってしまいます。 金額を手入力すればいいのですが、全社員分となると膨大な量になってしまいます。 なんとか自動で抽出出来ないものでしょうか。 お知恵をお貸しいただければ幸いです。 稚拙な説明ではありますがよろしくお願いします。

  • 【Excel】VLOOKUP関数について

    Excel2003を使用しています。 B列にコードNo.、D列に会社名が入力されている表(1)があります。 表(1)とは別のシートで、B列にコードNo.を入力すると、D列に会社名が表示されるように、VLOOKUP関数で検索範囲を表(1)としてD列に数式を入力しています。 これを逆に、D列に会社名を入力したら、B列にコードNo.が表示されるようにしたいのですが、B列に数式を入力する際、表(1)はこのまま利用できるのでしょうか?

  • VLOOKUP関数にて累計数を求めたい

    どうしても関数を使い求めたいので宜しくお願いします。 A2~A5が名前が入力されています。 B2~B5に数字が入力されています。 この表がシート1~シート3になります。 4枚目に累計シートとしてB2~B5にVLOOKUP関数にて各シートの合計を求めたい。 同様な質問ばかりで申し訳ありません。この質問を最後にします。

専門家に質問してみよう