Excelの関数で支店別の値段データを抜き出す方法について

このQ&Aのポイント
  • Excelで支店別に値段データを抜き出すための関数は何を使えば良いのでしょうか?VLOOKUP関数やINDEX関数は複数の条件で使用することができますが、カウントIF関数は数値を抜き出すための関数です。
  • 上記のようなデータテーブルがあり、6つの支店とAからGまでの品名があります。支店と品名ごとに値段データを抜き出す方法を教えてください。
  • Excelで複数条件でデータを抽出するためには、INDEX関数やVLOOKUP関数を使用することができます。カウントIF関数は数を抽出するための関数であり、この場合には使用することができません。
回答を見る
  • ベストアンサー

Excel

お世話になります。Excelで何の関数つかえばいいのかわかりません。 月 支店名 品名 値段 1月 1 A 160 8000行ぐらい続きます。 これを 1支店 2支店 1月 2月 3月... 1月 2月 3月... A B 上記のように、支店が6店あり品名もAから重複抜かして1000ぐらいある中の AからGの値段データを抜き出す関数はなにをつかえばいいのかわかりません。index関数、Vlook関数は複数条件で使ったことがないのですし、カウントイフス関数は数を抜き出す関数だし...とか自分なりに考えてはいるのですがわかりません。ご存知の方お知恵拝借させて下さい。

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

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

売上集計と売価検索の両方の関数を記載しておきます。 元データをsheet1、抽出先をsheet2とします。(添付画像) 1.売上集計 sheet2 B4式  =IF($A4="","",SUMIFS(Sheet1!$D:$D,Sheet1!$B:$B,$B$1,Sheet1!$A:$A,B$3,Sheet1!$C:$C,$A4)) 右、下方向へオートフィル 商品名は商品一覧表をお持ちでしょうからそれからコピーするのが一番早い方法ですが、商品名まで抽出したい場合の方法は、sheet1に作業列を設定する方法が簡単な方法です(配列数式方式もありますがお勧めしません) 商品名抽出不要の場合はsheet1の作業列の作成は不要。 sheet1のE2式 =IF(COUNTIF($C$2:C2,C2)=1,ROW(),"") 下方へオートフィル sheet2、A4式 =IF(COUNT(Sheet1!$E$2:$E$10000)<ROW(A1),"",INDEX(Sheet1!$C$2:$C$10000,SMALL(Sheet1!$E$2:$E$10000,ROW(A1)))) 2.値段の抽出 仮に複数一致のデータがある場合は、最初に一致した数値を取得します。 sheet2のE4式 =IF($A4="","",INDEX(Sheet1!$D$2:$D$10000,MATCH($B$1&$A4&B$3,INDEX(Sheet1!$B$2:$B$10000&Sheet1!$C$2:$C$10000&Sheet1!$A$2:$A$10000,0),0))) 右方向、下方向へオートフィル。 処理数が多いので、時間がかかる可能性はあります。

nafun0404
質問者

お礼

ご回答ありがとうございます。indexもVlookも単純なパターンしかやったことなかったのですごい参考になりました本当にありがとうございました。

その他の回答 (5)

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

#5です VBAでやるなら、下記の程度の作業です。 Sheet1=源データシート(「その年」以外の日のデータは混じっていないものとする) 見本 売上日 支店店番 商品 販売価格 2015/1/3 1 a 1 2015/1/4 2 c 3 2015/1/5 3 a 5 2015/1/6 1 b 1 2015/1/7 2 c 3 2015/1/8 3 a 5 2015/1/9 1 c 7 2015/2/10 2 b 9 2015/2/11 3 b 1 2015/2/12 1 a 1 以下行略 ーーー Sheet2=結果を出すシート Sheet3=Sheet1をシートコピーしたシート。店別にソートしておいた方がよい。 (1)商品名一覧を1列に出す。 (関数でやる場合も、この作業が必要で、その後SUMIFSで月と商品名を指定して 集計データを各セルにだす方法になるだろう) http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1099550340 ・関数でやる方法と ・操作でやるなら、データーフィルター「フィルタオプションの設定」ー「重複するレコードは無視する」を使う ・VBAで出す方法 がある。 ・それをSheet2のA列に(A3セルより下行に)貼り付ける。 ・ほかに、Sheet2の第2行に 商品 1月 2月 3月 4月 5月 以下右部分省略 を貼り付ける(見出しとセットする列の条件に使います)。 (3)VBE画面の標準モジュールに下記コードを貼り付ける。 ーーーー Sub test01() b = Array(1, 2, 3, 4, 5, 6) '支店店番テーブル Set sh1 = Worksheets("Sheet3") Set sh2 = Worksheets("Sheet2") sh2.Range("b3:m100000").Clear '集計結果を置くセル範囲をご破算 Set sh3 = Worksheets("Sheet3") dr = Worksheets("Sheet3").Range("A100000").End(xlUp).Row 'データ最下行番号 'MsgBox dr sh2.Cells(1, "A") = b(j) & "支店集計" '--- For j = b(0) To b(0) '6店 For i = 2 To dr '--1行の各フィールドのデータを捉える m = Month(sh1.Cells(i, "A")) '月数字 'MsgBox m br = sh1.Cells(i, "B") '支店コード g = sh1.Cells(i, "C") '商品 p = sh1.Cells(i, "D") '売上高 If br = j Then 'その支店限定 k = k + 1 '件数 '列を探る c = m + 1 '月の列を探す.1月は第2列から始まるので+1 r = sh2.Range("A3:A5").Find(g).Row '商品の行を探す sh2.Cells(r, c) = sh2.Cells(r, c) + p '商品売上高を足しこむ End If Next i Next j End Sub ーーーー これを実行する(F5キー)。 (4)結果シートのSheet2に、1か店分の集計表が出る。 1支店集計 商品 1月 2月 3月 4月 5月 以下右部分省略 a 2 4 16 16 2 b 2 14 ー 2 2 c 14 ー 2 2 14 --- ●ピボットテーブルを勉強するのが一番得策と思う。 ●関数でやるなら 商品 1月 2月 3月・・・ a X b c ・ ・ のようなのを作っておいて(やり方は、前述の「フィルタオプションの設定」で空白範囲に出して、ここA列へコピペ、Xのところのセルに関数SUMIFSを入れて、下方向、右方向に式を複写する方法が一番簡単かと思う。

nafun0404
質問者

お礼

ご回答ありがとうございます。親切にマクロのソースとか教えてくださって、ありがとうございます。利用させて頂きます。又わからないところあるかと思います。その時は、また、よろしくお願いいたします。

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

エクセルの初心者にありがちな、エクセルの利用=「エクセル関数を使う」しか思い浮かばない、悪いパターンです。 エクセルには、大きく分けて (1)操作(並べ替えもある)(2)ピボットテーブルのように、限定した目的のプログラムをMSが組んでいて、操作で使えるようにしたもの(3)関数式(ほかに配列数式)(4)VBAがあるので、日ごろよく勉強し、課題に当たるときは、いつもどれを使うべきか考えるべきなのだ。関数だけしか知らずで、仕事にエクセルを使うのは、力不足だろう。 ーーー この質問のおすすめ処理パターンは、ピボットテーブルの利用だと思う。 ーーー それに質問の文章が、ブッキラボウで、内容がよくわからない。 表題も「Exel」なんて書いても、読者の理解のなんの足しにもならない。 内容を要約して、表題を付ける訓練をすること。 ーー もっとも大きい問題は、「値段」とは売上高で、支店別+月別+品名別の(売上高)集計を望んでいるのだろうね。値段といえば個別の商品の値段表のようにも取れる。 値段は、日々に変わるのだろうね。  例もそっけない。もう少し例を増やして、読者が推定で内容の理解を補えるようにすべきだ。 ーー エクセル関数を使って、条件を指定して、条件に該当するものを(個々に)抜き出して並べるのは、関数式が複雑になって、ちょっとぐらい関数を勉強しても思いつくものではないし、回答に出ても理解できないだろう。  集計(合計)値をだすほうが、エクセル関数でやりやすい。 WEBで「エクセル 関数 抜出し」で照会すれば、質問と回答が出て、その関数式のむつかしさが、わかる例が出てくるだろう。 「1支店 2支店」は列方向に並べるということだろうが、表が見にくいのではないか。 この辺にエクセル使用経験が豊富かどうか出てくると思う。印刷もしにくい。 別支店分は、下方向に支店分を並べるのがおすすめ。 ーー もし間に合えば、VBAでの回答を後刻上げてみます。

nafun0404
質問者

お礼

言葉足らずなところ多々あり申し訳ございませんでした。ご回答ありがとうございます。又教えて頂くこと多々あると思いますのでその時は又よろしくお願いいたします。

  • -9L9-
  • ベストアンサー率44% (1088/2422)
回答No.3

月や支店で値段が変わるってどういうこと?「値段」とはもちろん単価のことですよね? 「上記のように」とありますが、結局「値段」はどこにどういう風に表示するんですか? A列には一行目に1支店、2行目に1月、3行目・4行目に品名が入っていますが、B列には一行目に2支店、2行目に2月と入っていますが、3行目・4行目には何もない、以下C列以後も同じようですが、この表の意味するところは何?何のためにこんな表を作るのか、目的が全く分かりません。 質問するなら意味が分かるように書いて下さし。

nafun0404
質問者

お礼

ご回答ありがとうございます。言葉足らずでご迷惑おかけしました。解決しましたので、色々とありがとうございました。又わからない時はよろしくお願いいたします。

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

COUNTIFS関数は複数条件の合致する個数を数える関数です SUMIFS関数は複数条件で合致する数字の合計を数えます。 例: =SUMIFS(D:D,A:A,"1月",B:B,"1支店",C:C,"A") 勿論実際の式中の「"1月"」だの「"A"」だのは、あなたが実際に用意した集計表の該当セルを使って計算します。 もっとも >重複抜かして1000ぐらいある わざわざこんな説明を書いているのに「具体的なデータの事例」が何も情報提供されれていないので、これじゃ計算できないのかもしれませんね。(もっともその場合は、一体「何を」計算したいのかイミフメイになりますが)

nafun0404
質問者

お礼

ご回答ありがとうございます。皆さんのお知恵拝借して解決しましたので、この度は色々とご迷惑おかけしました。又わからない時あると思いますので、その時は又よろしくお願いいたします。

  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.1

関数ではなく、ピボットテーブルでしょう。

関連するQ&A

  • エクセルの関数

    エクセル関数についての質問です。 A,B,C,D,Eの5つのファイルにそれぞれ1000個のデータが入っています。 このファイルにあるデータは、Aの中でも重複していたり、 同じデータが複数入っている場合もありますし、 異なるファイル間でも同じようにデータの重複や複数のデータが 入っています。 このような状況で、ある特定のデータがどのファイルに入ってるのか 検索をかけ、入っているファイル名を返してくれる関数はあります でしょうか?特に、複数ある場合は、複数返してくれるものが望ま しいです。 説明が下手で恐縮ですが、お知恵を拝借できればと思います。 どうぞ宜しくお願い致します。

  • エクセルで範囲内のデータを抽出

    エクセルで範囲内のデータを抽出 0~10 a 11~19 b というように計算した結果を不規則な数値範囲に参照してその結果を返したいです vlookで作ろうとしましたが完全一致しないと戻り値がおもうようにいきませんでした 10段階位の範囲なのでif関数でも無理があります どなたかお知恵を拝借できませんか?

  • エクセルで多項目のリストを作成する場合

    エクセル初心者です。 エクセルで多くの数値を入れるリストをつくる場合、 単に見やすくするためだけに入れている空白の行や列など不必要な ものは削ったほうがいいでしょうか? ・関数はVLOOKなどを使用します。 ・作成した後は、複数の人がそのリストを見ます。

  • Excelの関数に関して教えて下さい

    パソコンはWindos98です。 ExcelのAシートに     A列    B列    C列    D列    (品名) (ロット) (容量)  (数量) 1行 みかん   123   100g  3 2行 りんご   456   100g  4 3行 ピーチ   789   120g  2 とある場合に新たなBシートの A1のセルに「りんご」と入力した場合に A1 品名 A2 ロット A3 容量 A4 数量 Aシートの2行目のデータをBシートのそれぞれの欄に 自動的に入るという関数はありますでしょうか? ちなみにAシートのりんごのデータは2行目にくるか 3行目にくるかは分からないのでどこの行に入力しても Bシートに反映されるというようにしたいのです。 補足もしますのでどうか宜しくお願いします。

  • ★エクセルで星取表を作成したい★

    お世話になります。 エクセルのA~Zの行にあるデータをA列に入力した時に★(1でもいいのですが)を表示させたいのです。   A  B   C   D  E  F G・・・・・   1  2  3   4  5  6 1 ★ 2   ★  6              ★ 上のようなイメージです。VLOOKやIFなどやっては見たのですが出来ませんでした。 ちなみにVBAやマクロは苦手です。関数でよい方法はありませんか? お願いします。

  • エクセルでこれを実現する方法

    エクセル上で、セルA1に1、A2に2・・・という感じで A10まで数字があるとします。 ここで私が知りたいのは、各セル内で重複している 数字がいくつ存在するか、ということです。 この場合でいうと、A1~A10に1~10まで重複なく数字が あるとすると、重複は「0」で、仮にA10に8という数字が合った場合 重複は「1」という情報を知りたいのです。 これをエクセル上で実現する方法は何がベストなのでしょうか。 (関数?VBA?その他・・・もしくは不可?) 実際の入力数値はお金(数十万単位)の上、 量も膨大ですのでオートフィル機能は非現実的だと 考えております。 関数やVBAは少々触ったことがあるレベルです。 大した知識はなく、ちょっと混乱気味で、 知識ある方のご意見・お知恵を拝借したく よろしくお願い致します。

  • EXCEL SUMIFについて

    EXCELでSUMIF関数を使って金額が集計される様になってるのですが 何故かBATTERYとTHERMISTORという品名だけが集計されません↓ 何故でしょうか?他の品名に書き換えると集計されるます。 ちなみに関数は=SUMIF(A1:A351,"BATTERY",G1:G351)と (範囲,検索条件,合計範囲)のセオリー通りでやってるのですが…

  • エクセルで質問です。

    エクセルで (例) A列に名前を入力しています。 1行目 あ様 2行目 あ様 3行目あ様 4行目 う様 5行目 え様 6行目え様 これを 1~3行目の重複しているあ様  5~6行目の重複しているえ様 をどちらでも良いので1行だけ生かす もちろん、う様も1行だけ生かした表にしたいのです。 こんな、関数でもフィルターでも何でも良いので できますか? 知識のあるお方、教えてください。 お願いします。

  • ExcelのVBAに詳しい人に質問です

    B列に品名、C列に個数、D列に『COUNTIF関数』を使って品名が重複した場合に重複と出るようにしている表があります。※画像参照 そこで、個数(C列)が空白の行と、重複がある行を削除したいのですが、 これをVBAで簡単に処理できるようにできないでしょうか。 詳しい方アドバイスお願いします。

  • 【エクセル】自動で、同じ内容のセルを結合させたい。

    ある縦1列に(A01が5行、A02が8行・・・ G32が4行といったように)規則的に 並んでいる複数の分類番号があるとして、 これら同じ分類番号を見やすくするために、 今は一つ一つ手動でセル結合しています。 もし、自動的に、同じ分類番号を一つのセルに 結合してくれるようなやり方があったら・・・ と思うのですが、何かお知恵を拝借できないでしょうか?

専門家に質問してみよう