Excel関数
表1 お菓子類販売数
A列 B列 C列 D列 E列・・・・Q列
1 メーカー名 商品名 部門 1月 2月・・・・合計
2 つばめ すっきり ジュース 350 250・・・・4500
3 つばめ まろやか ガム 214 205・・・・2840
4 つばめ げんき ガム 247 198・・・・3120
5 つばめ いちご ジュース 360 380・・・・5240
6 すずめ みかん ジュース 320 215・・・・4162
7 すずめ あまあま ジュース 284 178・・・・3968
8 すずめ しゃき ガム 183 216・・・・2963
9 すずめ グリーン ガム 169 209・・・・2834
10 はと れもん ジュース 217 301・・・・4295
11 はと かるい ガム 238 240・・・・3657
12 はと すうすう ガム 199 236・・・・3102
上記の表がシート1にあります。
そして、シート2に下記の2つの表を作成しなければなりません。
表2 部門別販売数No.1
A列 B列 C列 D列
1部門名 メーカー名 商品名 合計
2ジュース
3ガム
表3 メーカー別販売数ベスト3
A列 B列 C列 D列
1メーカー名 1 2 3
2つばめ
3すずめ
4はと
表2はジュース・ガムの部門別のトップ販売数の商品名とメーカー名、合計(表1のQ列)を表示させます。
表3は部門に関係なくメーカー別に販売数ベスト3商品名を表示させます。
どのように関数式を作ったらいいのでしょう?
両方ともINDEX、MATCH、LARGE関数を使うのかなあと漠然と考えるのですが・・・
表3はメーカーの検索範囲をどのように指定するのかが特にわかりません。
表2はうまく考えがまとまりません・・・
どなたか教えて下さい!よろしくお願いします。
No.8
- 回答日時:
すみません 先ほどの計算式では、合計が同じ場合の事を
考慮していませんでした。
先ほどの式を入力後修正してみてください。
Sheet1 のS列より右側に修正を行います。
つばめ列の右に3列 列を追加する
すずめ列の右に3列 列を追加する
はと 列の右に3列 列を追加する
T2セル =IF(S$17=ROWS(T$2:T2),0,S2)
先ほど追加した列全ての2行目から12行目に
(T2~V12 ,X2~Z12 ,AB2~AD12 )
コピーする。
16行から17行を消去する。
S15セルの式を T15~AD15 にコピーする。
S17セルの式を T17~AD17 にコピーする。
Sheet2
C9セルの $S$17 部分を S17 に修正する。
C9セルの式を、D9 ,E9 にコピーする。
C10セルの $W$17 部分を W17 に修正する。
C10セルの式を、D10 ,E10 にコピーする。
C11セルの $AA$17 部分を AA17 に修正する。
C11セルの式を、D11 ,E11 にコピーする。
もし、3位が、2商品存在していた場合にも
対応する必要が有るならば、
Sheet1
V18セル =IF(U15=V15,1,0)
V18セルの式を、Z18 ,AD18 にコピーする。
Sheet2
F8セル =IF(SUM(Sheet1!$S$18:$AE$18)>=1,E8,"")
F9セル =IF(Sheet1!V18>=1,INDEX(Sheet1!$B$2:$Q$12,Sheet1!V17,2,1),"")
F10セル =IF(Sheet1!Z18>=1,INDEX(Sheet1!$B$2:$Q$12,Sheet1!Z17,2,1),"")
F11セル =IF(Sheet1!AD18>=1,INDEX(Sheet1!$B$2:$Q$12,Sheet1!AD17,2,1),"")
同じ様な事を、部門別でも必要ならば、同じ考え方で対応出来ると思います。
(注意:変更部分のチェックが一部分のみですので
ファイルをコピーしてから行ってみて下さい。)
考えかた
デターをメーカー 及び 部門 毎に分割
それぞれのデーターを、上位から下位に選択
(1位のデーターを 0 にして2位のデーターを選択)
(2位のデーターを 0 にして3位のデーターを選択)
(3位のデーターを 0 にして4位のデーターを選択)
(これにより同位が複数あっても対応する)
選択データーの列位置を呼び出す
列位置から必要行のデーターを表示させる
追加部分
3位のデーターが、2データーあった場合
そのデーターも表示させる
ありがとうございました。
ただ、作業列を使用できないので、今回は他の方の回答を参考にさせていただきました。
今後の参考にさせていただきます。
No.7
- 回答日時:
ちょっと面倒くさい方法ですが、
全体としては、単純だと思いますので参考にしてみて下さい。
Sheet1 の B2 が つばめ ~ Q12 が 3102 のデーターが入力されている条件です。
Sheet1 に以下の式を入力する。
S1セル つばめ
T1セル すずめ
U1セル はと
W1セル ジュース
X1セル ガム
S2セル =IF(S$1=$B2,$Q2,0)
S2の式を、S2 から U12 にコピーする。
W2セル =IF(W$1=$D2,$Q2,0)
W2の式を、W2 から X12 にコピーする。
S15セル =LARGE(S$2:S$12,1)
S15の式を、S15 から U17 と W15 ,X15 にコピーする。
S16セル =LARGE(S$2:S$12,2)
S16の式を、T16 ,U16 にコピーする。
S17セル =LARGE(S$2:S$12,3)
S17の式を、T17 ,U17 にコピーする。
S19セル =MATCH(S15,S$2:S$12,0)
S19の式を、S19 から U21 と W19 ,X19 にコピーする。
Sheet2 の C2 に メーカー名 が入力されているとする。
Sheet2 に以下の式を入力する。
B3セル ジュース
B4セル ガム
C3セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$W$19,1,1)
D3セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$W$19,2,1)
E3セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$W$19,16,1)
C4セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$X$19,1,1)
D4セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$X$19,2,1)
E4セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$X$19,16,1)
C8セル 1位
D8セル 2位
E8セル 3位
B9セル つばめ
B10セル すずめ
B11セル はと
C9セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$S$19,2,1)
D9セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$S$20,2,1)
E9セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$S$21,2,1)
C10セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$T$19,2,1)
D10セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$T$20,2,1)
E10セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$T$21,2,1)
C11セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$U$19,2,1)
D11セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$U$20,2,1)
E11セル =INDEX(Sheet1!$B$2:$Q$12,Sheet1!$U$21,2,1)
データー数が多い場合には、列、行 を挿入してみて変化する部分を
確認して変更を行ってみて下さい。
No.6
- 回答日時:
配列数式でも出来るのでやってみた。
例データ
A列B列C列D列E列・・・・Q列
1メーカー名商品名部門1月2月合計
2すずめグリーンガム169?2092834
4すずめしゃき??ガム183?2162963
8すずめあまあまジュース284?1783968
9すずめみかん??ジュース320?2154162
3つばめまろやかガム214?2052840
6つばめげんき??ガム247?1983120
11つばめすっきりジュース350?2504500
12つばめいちご??ジュース360?3805240
5はと??すうすうガム199?2363102
7はと??かるい??ガム238?2403657
10はと??れもん??ジュース217?3014295
D16:E24に下記を用意する
ガム3657
ジュース5240
すずめ14162
すずめ23968
すずめ32963
つばめ15240
つばめ24500
つばめ33120
F16に
=MAX(IF($D$3:$D$14="ガム",$I$3:$I$14,""))と入れてSHIFT+CTRL+ENTERの3つのキーを同時押し。
F17へは式の複写.
F19に
=LARGE(IF($B$3:$B$13=D19,$I$3:$I$13,0),E19)と入れてSHIFT+CTRL+ENTERの3つのキーを同時押し。
F24まで式複写。
知る紋では順位を横に流しているが、順位をColumn()-1のようにすれば返られる。
ーー
文字は完全位置で無いと結果がおかしくなる。
こちらでは、WEB本質問のデータをコピーし区切り位置で分離すると、「つばめ」のあとにスペースが付いて、旨く結果が出ず手間取った。注意。
ー
もうそろそろエクセル関数では限界で、アクセスのSQLを使うとか、VBAでも使うとかする時期になっているかと思いますよ。
No.4
- 回答日時:
Sheet2には以下の式を入力します。
D2セル
=MAX(INDEX((Sheet1!$C$2:$C$20=A2)*(Sheet1!$Q$2:$Q$20),))
B2セルに以下の式を入力し右方向に1つ、下方向にオートフィルします。
=INDEX(Sheet1!A$2:A$20,MATCH($D2,Sheet1!$Q$2:$Q$20,0))
Sheet3のB2セルに以下の式を入力し、右方向に3つ、下方向にオートフィルします。
=INDEX(Sheet1!$B$2:$B$20,MATCH(LARGE(INDEX((Sheet1!$A$2:$A$20=$A2)*Sheet1!$Q$2:$Q$20,),COLUMN(A1)),Sheet1!$Q$2:$Q$20,))
No.2
- 回答日時:
かなり面倒な作業になりますが次のようにすればよいでしょう。
表1がシート1に表2がシート2に表3をシート3に作るとしてシート1では1行目を項目名などにしてデータは2行目から下方に有るとします。
シート1ではいくつかの作業列を設けます。
R1セルには部門別順位とでも入力してからR2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(A2="","",SUMPRODUCT((($C$2:$C$1000=C2)*$Q$2:$Q$1000>Q2)*1)+1)
S1セルには部門区分とでも入力してからS2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(R2="","",IF(R2=1,MAX(S$1:S1)+1,""))
T1セルにはメーカー別順位とでも入力してからT2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(A2="","",SUMPRODUCT((($A$2:$A$1000=A2)*$Q$2:$Q$1000>Q2)*1)+1)
U1セルにはメーカー区分とでも入力してからU2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(A2="","",IF(A1<>A2,MAX(U$1:U1)+1,IF(A1=A2,U1,"")))
V2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(U2="","",U2&"/"&T2)
以上でシート1での作業は終了して、シート2ではA1セルに部門別販売数No1とでも入力します。
A2セルに部門名、B2セルにメーカー名、C2セルに商品名、D2セルに合計とでも入力します。
A3セルには次の式を入力してD3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(COUNTIF(Sheet1!$S:$S,ROW(A1))=0,"",IF(COLUMN(A1)=1,INDEX(Sheet1!$C:$C,MATCH(ROW(A1),Sheet1!$S:$S,0)),IF(COLUMN(A1)=2,INDEX(Sheet1!$A:$A,MATCH(ROW(A1),Sheet1!$S:$S,0)),IF(COLUMN(A1)=3,INDEX(Sheet1!$B:$B,MATCH(ROW(A1),Sheet1!$S:$S,0)),IF(COLUMN(A1)=4,INDEX(Sheet1!$Q:$Q,MATCH(ROW(A1),Sheet1!$S:$S,0)),"")))))
シート3ではA1セルにメーカー別販売数ベスト3とでも入力します。
A2セルにはメーカー名、B2セルには1、C2セルには2、D2セルには3と入力します。
A3セルには次の式を入力したのちにD3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(COUNTIF(Sheet1!$U:$U,ROW(A1))=0,"",IF(COLUMN(A1)=1,INDEX(Sheet1!$A:$A,MATCH(ROW(A1),Sheet1!$U:$U,0)),IF(AND(COLUMN(A1)>=2,COLUMN(A1)<=4),INDEX(Sheet1!$B:$B,MATCH(ROW(A1)&"/"&COLUMN(A1)-1,Sheet1!$V:$V,0)),"")))
ありがとうございました。
今回は作業列を使用できないので、ANo5さんの回答を参考にさせていただきました。
今後の参考にさせていただきます。
No.1
- 回答日時:
↓合計に重複があったら、使えません。
B15:D15セル範囲を選択して
=INDEX(A:Q,MIN(IF(MAX(IF($C$2:$C$12=$A15,$Q$2:$Q$12))=$Q$2:$Q$12,ROW($Q$2:$Q$12))),{1,2,17})
[Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)
B19セルに
=INDEX($B:$B,MIN(IF(LARGE(IF($A$2:$A$12=$A19,$Q$2:$Q$12),B$18)=($A$2:$A$12=$A19)*$Q$2:$Q$12,ROW($Q$2:$Q$12))))
[Ctrl]+[Shft] +[Enter] で確定)
エラー処理もしていません。
重複があった場合はどのように処理するのでしょうか?
作業列を使っても良いでしょうか?
ありがとうございました。
今回は作業列を使用できなかったので、ANo.5さんの回答を参考にさせていただきました。
今後の参考にさせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) Excelで該当しない項目(#N/Aの商品名)を簡単に表示・抽出させる方法についてです 1 2022/08/25 22:12
- Visual Basic(VBA) VBAで質問があります 1 2022/10/19 10:32
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- Excel(エクセル) 【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。 3 2023/03/23 17:30
- Excel(エクセル) Xlookupの結果がうまくいきません。(excel2013) 2 2023/06/18 17:32
- Excel(エクセル) 年齢ごとの商品の販売個数を集計しようとしています。 a列が日付、b列が年齢、c列が販売個数のばあいで 4 2022/09/26 22:35
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】スペースがいくつ入っ...
-
西暦や和暦の表示をyyyymmdd表...
-
Excelのセルを飛ばして入力する
-
Excelのオートフィル
-
別シートからの文字を変更
-
Excel 2019 のピボットテーブル...
-
エクセルの行の抽出について質...
-
【マクロ】エクセルにかいてあ...
-
スプレッドシート クエリ関数 1...
-
エクセルでセルに「氏名を入力...
-
MOS365 Excel Expert / Excel R...
-
excelの不要な行の削除ができな...
-
EXACT関数とIF関数の組み合わせ...
-
スプレッドシートの関数VLOOKUP...
-
Excelで全角を半角にしたいので...
-
Excel初心者です。 詳しい方、...
-
エクセルの数式で教えてください。
-
4つのパターンを表示するEXACT...
-
スマートな関数を教えて下さい。
-
【Excel】セル内の時間帯が特定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報