- ベストアンサー
同じデータをまとめて合計を出す
エクセルでいくつかのデータがあったとします。 A A B B B C C C C C (D) E (括弧付きは、無い場合もあるということです) このA~Eを数えて、数量を表示したいです。 A 2 B 3 C 5 E 1 セル位置は固定で、その時の種類数だけ表示したいです。 (BとEだけのときもある) これをエクセル関数でうまく行う方法は、ありますでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
無いアルファベットは空白ではなく間を詰める。 というのは、かなり困難ではないかと思われます。 取り合えず、こんなやり方しか思いつかなかったのですが、 参考になればいいのですが...。 まず、間を詰める為にアルファベットを数字に置き換えます。 下記のように1行目にランダムなアルファベットが入力されているとします。 A B C D E F G H I J K L M N 1 A A C C B E C C B E A 1 2 2 1 1 3 3 2 5 3 3 2 5 B 2 2 3 C 3 4 4 E 5 2 5 その下の2行目に数字に置き換える為の関数を入れます。 A2=IF(A1="A",1,IF(A1="B",2,IF(A1="C",3,IF(A1="D",4,IF(A1="E",5,""))))) と入れて右へドラッグします。(上記表でJ列まで) そして、答えを出す方も同様に数字で表示します。 取り合えず答えの場所をL,M,N列にしました。 まずM列の最初に M1=MIN(A2:J2) と入れます。 その後、 M2=IF(COUNTIF(A$2:J$2,M1+1)>0,M1+1,IF(COUNTIF(A$2:J$2,M1+2)>0,M1+2,IF(COUNTIF(A$2:J$2,M1+3)>0,M1+3,IF(COUNTIF(A$2:J$2,M1+4)>0,M1+4,"")))) と入れて、下へドラッグします。 L列には、数字をアルファベットに変換するために、 L1=IF(M1=1,"A",IF(M1=2,"B",IF(M1=3,"C",IF(M1=4,"D",IF(M1=5,"E",""))))) と入れて、下へドラッグします。 最後に、個数を入れるセルN列に N1=COUNTIF(A$1:J$1,L1) と入れて下へドラッグして下さい。 あと、数字に変換した行及び列はかくして下さい。 その時、2行目の上記でいうL2の"B" 等の表示された箇所が 表示させなくすると一緒に消えてしまうので 隠すときにズラして下さい。 (セルコピーをすると関数式の行がズレるので ダブルクリックをして内容コピーをして下さいね。) これで、抜けたアルファベットの間を詰めて表示されると思います。 (※関数式の"="の前のセル番号は分かりやすく書いただけなので 一緒にコピーしないで下さいね。)
その他の回答 (2)
- maron--5
- ベストアンサー率36% (321/877)
A B C D E F G H I J K L M N O 1 A A B B B C C C C E E A 2 2 1 1 2 2 2 3 3 3 3 3 4 4 B 3 3 C 4 4 E 2 ◆補助行 A2=COUNT(INDEX(1/(MATCH($A$1:A1,$A$1:A1,)=COLUMN($A$1:A1)),)) ★右にコピー N1=IF(ROW(A1)>MAX($A$2:$L$2),"",INDEX($A$1:$L$1,MATCH(ROW(A1),$A$2:$L$2,0))) ★下にコピー O1=IF(N1="","",COUNTIF($A$1:$L$1,N1)) ★下にコピー
お礼
ありがとうございます。 ただ、補助行のところの処理がよく理解できませんでした。(TT)
- lele00
- ベストアンサー率29% (74/250)
値がA1からE1までに入っていると仮定し、Aの個数を出すには、 =COUNTIF(A1:E1,"A") 同様に、 =COUNTIF(A1:E1,"A") =COUNTIF(A1:E1,"B") =COUNTIF(A1:E1,"C") =COUNTIF(A1:E1,"E") で、質問の様になります。
お礼
早速の回答ありがとうございます。 すみません、セル位置固定の説明が下手でした。 各要素(A,B等)で固定ではなくて、 例えば、種類がA、C、Eの3種の場合は、 A 2 C 5 E 1 2種の場合は、 A 2 E 1 といった具合に、上から順番に表示させ、無い物は間隔を詰めたいです。
お礼
ありがとうございます。 理解するのに時間がかかり、なかなか大変でしたが、 うまくいきました。