- 締切済み
エクセルで文字の個数をカウントする
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
>午前中にも同様の質問をしました 見つからないようだが。その質問番号をこの質問に書くのが常識でしょう。 どういう質問や回答だったか、非常に参考になる。 ーー 図を添付したら一番判ると思うのは間違い。質問の内容を文章で補うこと。 列的に1.2,3,4,5とあるから、例えばその3の列を全体として考えて、△の数いくら、○の数いくらというのを数えるのか。 例では数えるのは、行単位になっているよね。 そして列的に1,2、・・5まで数えて右側のまとめたセル範囲に個数を出す。 ーーー 右の列の○△○△V・・の(上に来るべきか?)見出しがどうなって居るかわからない。 それ1,2,3・・をを式に埋め込んで良いなら だい1行目が例えば3でそのセルが△載せるの個数を数えればよい。 条件付き個数のカウントでSUMPRODUCT関数で出来るだろう。 A1:J4 -セルはデータ省略 1 2 3 4 5 1 2 3 4 5 - - △ - - - - △ - - - - ○ - - - - △ - - - - ○ - - - - - - - ・・・以下の行は略 上記例データの右の続きK1:R4 1 2 3 4 5 △ ○ - - ○ - - - 2 1 - - ○ - - - 1 2 - - △ - - - 1 1 Q2の式 =SUMPRODUCT(($A1:$O$1=3)*($A2:$O2=Q$1)) R2に式複写 Q2:R2を下方向に式複写。 Q2の式で =3の部分も式を入れるセルの列から割り出せそうだが複雑化するので略。
- Cupper-2
- ベストアンサー率29% (1342/4565)
なあ、条件を付けずに質問なんてするものじゃない。 図を見て察しろは無理だろ。 質問の根本的な内容は、 3列ごと(A:C,D:F,G:I,…)に○△の数を数えたい じゃなかったのかな。 前の質問でベストアンサーにした回答は、3列ごとの先頭にある○を数えているように思うんだ。 前の質問で分かったつもりになったのは、回答をそのまま使えば良いと思ったからでしょ。 自身で考えることを放棄した(カンニングで済ませようとする)考え方の結果です。 まずはそれを反省しましょう。 以下、自身で考えるために必要な最低限の知識と、それを使った回答を述べてみます。 理解できなければ、回答をそのまま示す人の数式を参考にしてください。 まず、 SUMPRODUCT関数の意味 指定した範囲の配列要素ごとの数値の積を取り、その結果を合計(和)を解として返す関数。 2 3 4 5 6 7 を =SUMPRODUCT((2,3,4),(5,6,7)) とするなら 2×5 + 3×6 + 4×7 の計算結果を解として返してくる関数です。 難しい関数です。簡単に理解できるとは思っていません。 つぎ、 MOD関数 整数のわり算で、余りを解として返す関数。 MOD(5,2) ならば、5÷2=2…1 の 1が解として返ってくる。 さらに COLUMN関数 指定した範囲の横方向のセルの数(列の数)を返す関数。 COLUMN(B2:D5) ならば、B列、C列、D列 の 3列なので、3が解として返ってくる。 とりあえずSUMPRODUCT関数だけで示すなら =SUMPRODUCT((A1:C1="○")*1) で、A1セルから C1セルまでのカウントができる。 …これは A1セルから C1セルの中に "○" があれば TRUE 違えば FALSE が返ってくるから、 それに 1を掛けて、TRUEを 1 FALSEを 0 に置き換えている。 =SUMPRODUCT((A1:C1="○")*1) =SUMPRODUCT((True,False,False)*1) こんな感じになって =SUMPRODUCT(1,0,0) となって、1+0+0 の合計として解が返ってくる。 ■ここから本題 しかしよく考えて欲しい、こんな小難しいことをしなくても =COUNTIF(A1:C1,"○") で良い。 あとは、これをどうやって簡単に並べるかを考えるだけです。 OFFSET関数や INDIRECT関数、INDEX関数、COLUMNS関数、MOD関数関数を使って楽ができるでしょう。 しかし、質問者さんには難しすぎるようですので、COUNTIF関数だけで作成することをお奨めします。 ええ、必要な数だけね。(と言っても横方向に作ったら縦方向にはそれをコピーするだけ) さあ、がんばれ。
- nayuta_lot
- ベストアンサー率64% (133/205)
こんにちは 1行目に1から5の数値 2行目からデータとして Q2 =COUNTIFS($A2:$O2,"○",$A$1:$O$1,1) R2 =COUNTIFS($A2:$O2,"△",$A$1:$O$1,1) S2 =COUNTIFS($A2:$O2,"○",$A$1:$O$1,2) T2 =COUNTIFS($A2:$O2,"△",$A$1:$O$1,2) U2 =COUNTIFS($A2:$O2,"○",$A$1:$O$1,3) V2 =COUNTIFS($A2:$O2,"△",$A$1:$O$1,3) とそれぞれ入力して行コピーします。 COUNTIFS関数 ↓↓↓ http://www.becoolusers.com/excel/countifs.html 複数条件でカウントする関数です。 ご参考まで
- kagakusuki
- ベストアンサー率51% (2610/5101)
今仮に、画像中で左上の隅に位置する「1」と入力されているセルがA1セルであり、 1行目の左から17番目に位置する「○」と入力されているセルがQ1セルであり、 Q1~Z1の範囲の繰り返しの周期が2列周期(即ち、カウントの対象となる文字列の種類が、「○」と「△」の2種類だけ)であるものとした場合には、 Q2セルに次の関数を入力してから、Q2セルをコピーして、Q2~Z6の範囲に貼り付けると良いと思います。 =SUMPRODUCT(($A$1:$O$1=ROUNDUP(COLUMNS($Q:Q)/2,0))*($A2:$O2=Q$1)) 尚、カウントの対象となる文字列の種類が、例えば3種類の場合は、上記の関数中の /2 の部分を /3 という様に、「/」の後に付ける数を、Q列以降の繰り返しの周期の列数となる様にして下さい。
- keithin
- ベストアンサー率66% (5278/7941)
作成例1) あなたがご質問に書いたように,表に12345,12345,…と番号を振ってあるなら 添付図: Q4には =SUMPRODUCT(($A$3:$O$3=Q$1)*($A4:$O4=Q$3)) R4には =SUMPRODUCT(($A$3:$O$3=Q$1)*($A4:$O4=R$3)) この2個を組にして右にコピー,下にコピー #参考 「できない」ご相談では,あなたの「できない」数式を手抜きせずにご相談に投稿して掲示してください。そうすれば「どこを間違えているからこうしましょう」と,すぐに役に立つアドバイスも直ちに寄せられます。 今はあなたの「できなかった」数式がヒミツのままなので,ご自分で間違えた式をよく調べて,ホントはどこのセル範囲を計算しようとしているのに,間違ったどこのセルを計算してるから正しい答えにならないのか,調べてください。 作成例2) Q4には =SUMPRODUCT(($A4:$O4=Q$3)*(MOD(COLUMN($A4:$O4),5)=1)) R4には =SUMPRODUCT(($A4:$O4=R$3)*(MOD(COLUMN($A4:$O4),5)=1)) S4には =SUMPRODUCT(($A4:$O4=Q$3)*(MOD(COLUMN($A4:$O4),5)=2)) T4には =SUMPRODUCT(($A4:$O4=R$3)*(MOD(COLUMN($A4:$O4),5)=2)) U4には =SUMPRODUCT(($A4:$O4=Q$3)*(MOD(COLUMN($A4:$O4),5)=3)) V4には =SUMPRODUCT(($A4:$O4=R$3)*(MOD(COLUMN($A4:$O4),5)=3)) 1列目,2列目,3列目…が計算上幾つとなっているのか,A1セルに =MOD(COLUMN(A1),5) と記入して右にコピーして,理解してから計算しなければいけません。 作成例3) Q4に =SUMPRODUCT(($A4:$O4=Q$3)*(MOD(COLUMN($A4:$O4),5)=INT(COLUMN(B4)/2))) 右にコピー,下にコピー
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! アップされている画像のセル色は判りやすくするためだけに色を付けているのでしょうか? もしセル色も検索条件になるのであればVBAになってしまいます。 とりあえず↓の画像のような配置でセル色は関係なく、1行目の数値が 「1」の「○」・「1」の「△」・「2」の「○」・「2」の「△」・「3」の「○」・「3」の「△」の場合の数式です。 Q2セルに =IF(COUNTA($A2:$O2)=0,"",SUMPRODUCT((INT(COLUMN(B1)/2)=$A$1:$O$1)*($A2:$O2=Q$1))) という数式を入れ列方向と行方向にオートフィルでコピーすると画像のような感じになります。 尚、余計なお世話かもしれませんがセル色も判断材料となる場合のVBAは↓のような感じになります。 (データ配置は同じとします) 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j, k As Long Dim vl As Variant For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row '2行目~最終行まで For k = 17 To 22 '17列目(Q列)~22列目(V列)まで For j = 1 To 15 '1列目(A列)~15列目(O列)まで If Cells(i, j) = Cells(1, k) And Cells(i, j).Interior.ColorIndex = _ Cells(1, k).Interior.ColorIndex Then vl = vl + 1 End If Next j Cells(i, k) = vl vl = 0 Next k Next i End Sub 'この行まで 以上、長々と失礼しました。m(_ _)m