- ベストアンサー
500行の中から、多い順に抽出する方法
A列に一連番号、B列に型式、C列に製造番号、D列に販売月日が入力されています。 B列には複数のデータがランダムに入力されておりますが、それを多い順に一覧表にできるマクロがあれば…と考えています。 なにかいいアイデアはないでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (3)
- tsubuyuki
- ベストアンサー率45% (699/1545)
残念ながら、言葉が微妙に足りません。 まぁ、おそらくは「[型式]が出現する回数」が多い順で 十中八九間違いないとは思いますが。 ここに「E列には[販売台数]があって、その合計が多い順」という条件が加わると、 話が大きく変わってきちゃいます。 さてさて。 もうすでに回答が寄せられていますが、マクロにこだわる必要は皆無ですね。 この程度(失礼)の案件であれば、備え付けの機能である 「ピボットテーブル」で対応可能でしょう。 ※[販売台数]があっても対応可能です。 お使いのエクセルのバージョンによって操作が若干異なりますので、 それに合わせて使い方を調べて頑張ってみてください。 普通に「エクセル○○ ピボットテーブル」で検索すると、 使い方を解説してくれるサイトがごろごろヒットしますから。
- kagakusuki
- ベストアンサー率51% (2610/5101)
製造番号という事は、C列に入力されている値は全て数値データであり、同じ番号が重複して入力されている事は無いと考えて宜しいのでしょうか? 又、仮の話として、元データはSheet1に入力されていて、その1行目には「一連番号」、「型式」、「製造番号」、「販売月日」といった項目名を表す文字列が入力されているものとし、Sheet1のデータを基にして、C列の値が多い順に並べ替えた一覧表をSheet2に表示させるものとします。 まず、Sheet2のC2セルに次の関数を入力して下さい。 =IF(ROWS($2:2)>COUNT(Sheet1!$C:$C),"",LARGE(Sheet1!$C:$C,ROWS($2:2))) 次に、Sheet2のA2セルに次の関数を入力して下さい。 =IF($C2="","",IF(INDEX(Sheet1!$A:$D,MATCH($C2,Sheet1!$C:$C,0),COLUMNS($A:A))="","",INDEX(Sheet1!$A:$D,MATCH($C2,Sheet1!$C:$C,0),COLUMNS($A:A)))) 次に、Sheet2のA2セルをコピーして、Sheet2のB2セルとD2セルに貼り付けて下さい。 そして、Sheet2のA2~D2の範囲をコピーして、同じ列範囲の3行目以下に貼り付けて下さい。 以上です。
- satoron666
- ベストアンサー率28% (171/600)
1.B列の重複しないデータを抽出 (オートフィルタ⇒重複しないデータを抽出) 2.重複しないデータを元に、COUNT?する関数を入れる? マクロですので、こういう考え方なのかな?と思います。 VBAでしたらもう少し色々やり方はあるかと思いますが… 以上、参考まで