列の中に何種類のデータが入っているかを数えたいのですが、
(例えばA,B,B,C,F,F,F,D,Eだと「6」という答えが出るように)
過去の質問を検索したところ、
=SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))
という式を入れると書いてありました。
途中にブランクセルはないのでエラーにはならないのですが、
式を入れてENTERキーを押すとフリーズしてしまい、
強制終了しなくてはならなくなってしまいます。
データ数は8000件ほどあるので、量が多すぎてこのようになるのでしょうか?
何か他の方法があれば教えていただけませんでしょうか?
フリーズの原因についてもできれば知りたいと思います。
使用しているのはWindows98,Excel97です。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
'(1)A列にテストデータとしてSheet1のA1:A12にa,a,a,a,a,b,a,b,c,c,d,aといれます。
'(2)VBEのModule1に下記コードを入れます。
Sub test02()
d = Worksheets("sheet1").Range("a1").CurrentRegion.Rows.Count
'---初期設定。第1行目分処理。
Cells(1, 10) = Cells(1, 1) 'J列 品名
Cells(1, 11) = 1
m = 1
'-----第2行目以下
For i = 2 To d
For K = 1 To m
If Cells(i, 1) = Cells(K, 10) Then
Cells(K, 11) = Cells(K, 11) + 1
GoTo p01
End If
Next K
'---新しい文字列が見つかった時
m = m + 1
Cells(m, 10) = Cells(i, 1)
Cells(m, 11) = 1
'-----
p01:
Next i
End Sub
実行するとJ、k列に
a7
b2
c2
d1
となり、4種類であることが分かります。
上記では内訳まで出ていますが、直接4種だけを出すことは、もっと易しい。
回答ありがとうございます。
マクロで処理するほうが早いのですね…。
普段あまりマクロに慣れていないもので、
どういう風に書けばいいのか判らず、使わずじまいでした。
これから少しずつやっていこうと思います。
No.2
- 回答日時:
こんにちは
範囲がA1:A8000の場合
数式バーに
=SUM(IF(A1:A8000="",0,(MATCH(A1:A8000,A1:A8000,0)=ROW(A1:A8000))*1))
と入力して [Ctrl]+[Shift]を押したまま[Enter]で
入力確定(配列数式)
成功すると数式バーの数式は{}で括られます
注:ROW(A1:A8000)の部分は範囲参照ではなくN番目を
導き出す式なので計算結果が必ず1~ となります。
もし範囲が A3:A8000などであれば
ROW(A3:A8000)-2 と始まりが1になるように調整
する式を付加して下さい!
ROW(A3)-2 → 3-2 → 1
回答ありがとうございます。
教えていただいた方法を試したのですが、
同じく時間がかかりすぎて「応答なし」になってしまいました。
結局はデータを分割して切りぬけたのですが…。
配列数式は初めて知りました。
とても勉強になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 重複したデータ(空白は除く)のVBA表記について 4 2022/08/15 07:28
- Excel(エクセル) EXCEL 複数の条件に合致する個数を求めるには? 3 2022/04/19 16:39
- Excel(エクセル) エクセル関数についてお教えください 3 2023/07/24 12:33
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) エクセルの数式を等間隔にオートフィルできるやり方を教えていただきたいです。 実際の作業↓ A3セルに 7 2023/06/05 19:04
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- Excel(エクセル) 【エクセル】COUNTIFの検索条件が可変する数字の場合の数式 1 2022/09/27 15:34
- Excel(エクセル) エクセルのバージョン2016フリーズ改善策 5 2022/12/13 09:13
- Excel(エクセル) If関数に関する質問です。(再掲) 3 2022/10/01 20:51
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
Excel関数:「0」を除いた標準...
-
【エクセル】区切り位置で分割...
-
Excel関数で、範囲内の最後のセ...
-
ピボットテーブル 0個の行を...
-
値の入っているセルのうち、一...
-
エクセル 8ケタの数字から日数...
-
SUMIFで数値が入力されているセ...
-
エクセルに入力された日付「S40...
-
更新前と更新後の差分をVBAを使...
-
SUMPRODUCT関数 行が増えても...
-
Excelのマクロで行を間引きたい
-
Excelで複数列かつ複数行分の一...
-
エクセルの最小値抽出方法について
-
エクセル マクロ 連続する空...
-
エクセルで電話番号を - で分...
-
エクセルのSUMPRODUCT関数につ...
-
空白セルをつめる。
-
エクセルで何種類のデータがあ...
-
エクセル2000で〇×の並び替えを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで隣のセルと同じ内容に列...
-
Excel関数で、範囲内の最後のセ...
-
Excel関数:「0」を除いた標準...
-
【エクセル】区切り位置で分割...
-
ピボットテーブル 0個の行を...
-
更新前と更新後の差分をVBAを使...
-
値の入っているセルのうち、一...
-
SUMIFで数値が入力されているセ...
-
エクセル 8ケタの数字から日数...
-
エクセルに入力された日付「S40...
-
エクセルで何種類のデータがあ...
-
複数の候補列から、検索値と一...
-
correl関数の範囲指定
-
Excelで複数列かつ複数行分の一...
-
エクセル、正数のみの集計[(負...
-
Excelのマクロで行を間引きたい
-
スプレッドシートでドロップダ...
-
エクセルVBAを使ってセルに日付...
-
【Excel】歯抜けデータの集約
-
SUMIFとCOUNTIFの違いについて
おすすめ情報