お世話になっております。
エクセルについて質問させていただければと思います。
以下の値があるとき、”A列の特定の値の中でB列の重複したものを除外したデータ数をカウントしたく”思っております。
(あくまでも例なので、実際に作業を行うデータは数千行あります。)
A列 B列
あ アイス
あ アイス
あ プリン
あ ケーキ
い ケーキ
い プリン
う アイス
う だんご
う アイス
つまり、上記の値で考えると
下のような結果となります。
あ…3(個)
い…2(個)
う…2(個)
A列をフィルタしてから、カウントする方法もありますでしょうが
こちらに関しまして関数のみで処理できますでしょうか
何卒お願いいたします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
[No.3]は下記でも良さそうです。
E1: =A1&B1
C1: =IF(COUNTIF(A$1:A1,A1)=1,SUMPRODUCT((A$1:A$9=A1)*(1/COUNTIF(E$1:E$9,E$1:E$9))),"")
No.4
- 回答日時:
こんにちは
>関数のみで処理できますでしょうか
すでに回答がでていますが、別方法の一例です。
>A列の特定の値の中で~~
「特定の値」というのは個別に指定するのか、あるいは表全体から一覧的にリストアップするのかわかりませんでしたので、ひとまずリストアップする方で・・・
A、B列にデータがあるとして、D、E列にリストとカウント結果の表を作成します(添付図参照)
まず、A列から重複のない「値のリスト」をD列に作成します。
D1セルに
=IFERROR(INDEX(A:A,AGGREGATE(15,6,INDEX(ROW(A$1:A$1000)/(COUNTIF(OFFSET(A$1,0,0,ROW(A$1:A$1000)),A$1:A$1000)=1),,),ROW(A1))),"")
の式を入れて、下方にフィルコピーすることでリストが作成されます。
このリストの各値に対して、ご質問のカウント結果をE列に算出します。
E1セルに
=IF(D1="","",SUM(INDEX(IFERROR((MATCH(D1&B$1:B$1000,A$1:A$1000&B$1:B$1000,0)=ROW(A$1:A$1000))*1,0),,)))
の式を入力し、Ctr+Shift+Enterで確定します。(←必須です)
確定後、下方にフィルコピーすると、それぞれの値に対するカウント結果が表示されます。
>データは数千行あります
※ 上の式は1~1000行を対象として作成してありますので、実際に応じて範囲を修正する必要があります。
※ 計算が配列計算になっていますので、必要以上に範囲を大きくしずぎると、計算に時間が掛かってしまう可能性があります。
No.3
- 回答日時:
E1: =A1&B1
F1: =1/COUNTIF(E$1:E$9,E1)
C1: =IF(COUNTIF(A$1:A1,A1)=1,SUMPRODUCT((A$1:A$9=A1)*(F$1:F$9)),"")
No.2
- 回答日時:
こんばんは!
関数での方法をご希望だというコトですが、
手っ取り早くVBAでの一例です。
元データはSheet1にあり、Sheet2に表示するとします。
尚、Sheet1の1行目は項目行でデータは2行目以降にあるという前提です。
一例です。
標準モジュールにしてください。
Sub Sample1()
Dim myDic As Object
Dim i As Long, k As Long, lastRow As Long
Dim myStr As String, wS As Worksheet, myFlg As Boolean
Dim myKey, myItem, myR, myAry
Set myDic = CreateObject("Scripting.Dictionary")
Set wS = Worksheets("Sheet2")
wS.Range("A:B").ClearContents
With Worksheets("Sheet1")
wS.Range("A1") = .Range("A1")
wS.Range("B1") = "個数"
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
myR = Range(.Cells(2, "A"), .Cells(lastRow, "B"))
For i = 1 To UBound(myR, 1)
If Not myDic.exists(myR(i, 1)) Then
myDic.Add (myR(i, 1)), myR(i, 2)
Else
myStr = myDic(myR(i, 1))
myAry = Split(myStr, "_")
For k = 0 To UBound(myAry)
If myR(i, 2) = myAry(k) Then
myFlg = True
Exit For
End If
Next k
If myFlg = False Then
myStr = myStr & "_" & myR(i, 2)
myDic(myR(i, 1)) = myStr
End If
End If
myFlg = False
Next i
End With
myKey = myDic.keys
myItem = myDic.items
myR = Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "B"))
For i = 0 To UBound(myKey)
myAry = Split(myItem(i), "_")
myR(i + 1, 1) = myKey(i)
myR(i + 1, 2) = UBound(myAry) + 1
Next i
Range(wS.Cells(2, "A"), wS.Cells(UBound(myKey) + 2, "B")) = myR
Set myDic = Nothing
MsgBox "完了"
End Sub
※ コードは長いですが、ほとんど時間を要しないと思います。
※ 関数でないので
データ変更があるたびにマクロを実行する必要があります。
どうしても関数での方法をご希望の場合、
作業用の列を2列くらい設ければ対応できると思いますが
まずはこの程度で・・・m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Excel(エクセル) エクセル関数のスペシャリストの方、教えてください。 写真のように A列にはデータ C列にはデータの中 7 2022/04/09 00:15
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Visual Basic(VBA) VBAで大量データの処理 3 2022/11/15 21:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報