[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字列のランキング』(:-)
Win Vista Excel2007使用
任意の列に文字列(メニュー)があります
A B 1 カレー 2 ラーメン 3 カレー 4 うどん 5 ラーメン 6 ラーメン
ここで「=COUNTIF(B1:B6,"カレー”)」とすると「2」と表示されるのは分かるのですが、
自動的にランキングしてくれる関数使用方法はありますか?
@B列にメニューが入力されるたびに、既出のものは数が加算される。
A未出のものはランキングに加えられる、数の変動があれば順位変動する・・・。
この様にしたい場合、RANK関数、LARGE関数を組み合わせるのかな?とは思いますが・・・。
全部聞いてしまうと自分のためにはなりませんので、「可能か不可能か」と「可能であれば、関数の使い方のアドバイス」を頂けたらと思います。
「B列の数を集計して 別の所へ降順(或いは昇順)に並べる」 と言う事ですよね?
関数でも可能ですが ピボットテーブルの使用をお薦めします。
関数を使用する場合は COUNTIF関数でカウントして 重複を避けるため重みを持たせた後 LARGE関数で順に取りだし INDEX関数で項目名を参照する事にするのが 簡単かもしれません。
(HANA)
>関数を使用する場合は と書いていますが ざっくりとしか書いていませんので 細かい部分は、補ってください。
上で挙げた物も含め私がやる場合に使用すると 思われる関数を挙げておきます。 IF,COUNTIF,LARGE,INDEX MATCH,ROW,COUNT
数式を使って、大きい順に(ランク付けをして?) それに対応する文字データを取り出す方法は 過去ログにも有ると思いますし Web上にも有ると思いますので 検索してみられても良いかもしれません。
私はあくまでも ピボットテーブルをお薦めしますが。
(HANA)
◆関数でなおかつ作業列なしですと、かなり長い式になります A B C D 1 カレー ラーメン 5 2 ラーメン カレー 2 3 うどん うどん 1 4 ラーメン 5 ラーメン 6 カレー 7 ラーメン 8 ラーメン
C1=IF(ROW(A1)>SUMPRODUCT(($A$1:$A$10<>"")/COUNTIF($A$1:$A$10,$A$1:$A$10&"")),"",INDEX(A$1:A$10,MOD(LARGE(INDEX((MATCH( INDIRECT("A1:A"&COUNTA(A$1:A$10)),A$1:A$10,0)=ROW(INDIRECT("1:"&COUNTA(A$1:A$10))))*(COUNTIF(A$1:A$10, INDIRECT("A1:A"&COUNTA(A$1:A$10)))+ROW(INDIRECT("1:"&COUNTA(A$1:A$10)))/10^5),),ROW(A1)),1)*10^5)) ★下にコピー
D1=IF(C1="","",COUNTIF(A:A,C1)) ★下にコピー
◆やはり、ピボットテーブルがお薦めですね。 (Maron)
B列にメニュで C1に =IF(COUNTIF(B$1:B1,B1)=1,SUM(((COUNTIF(B$1:B$6,B$1:B$6)*(MATCH(B$1:B$6,B$1:B$6,0)=ROW(A$1:A$6)))>COUNTIF(B$1:B$6,B1))*1)+1,"") ctrl+shift+enterで確定 下へフィールコピー
各各の数式分解検証
=COUNTIF(B$1:B1,B1) =COUNTIF(B$1:B$6,B1)
=COUNTIF(B$1:B$6,B$1:B$6)の検証 =index(COUNTIF(B$1:B$6,B$1:B$6),row(A1))
=MATCH(B$1:B$6,B$1:B$6,0)の検証 =index(MATCH(B$1:B$6,B$1:B$6,0),row(A1)) 下へフィールコピー (NANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.