No.5ベストアンサー
- 回答日時:
No.4です。
>同じ組み合わせの重複を除いて、組み合わせ数の多い順に表記
の件について・・・
並び替えは最優先が「順序を問う」組み合わせ数(D列)
次に優先されるのは「順不問」の組み合わせ数 (E列)
の降順としてみました。
Sub Sample2() 'この行から
Dim i As Long, endRow As Long
endRow = Cells(Rows.Count, "A").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "E"), Cells(endRow, "E"))
.Formula = "=A1&B1&C1"
.Value = .Value
End With
With Range(Cells(1, "D"), Cells(endRow, "D"))
.Formula = "=COUNTIF(E:E,E1)"
.Value = .Value
End With
For i = 1 To endRow
With Cells(1, "G")
.Value = Cells(i, "A")
.Offset(1) = Cells(i, "B")
.Offset(2) = Cells(i, "C")
End With
Range(Cells(1, "G"), Cells(3, "G")).Sort key1:=Cells(i, "G"), order1:=xlAscending, Header:=xlNo
Cells(i, "F") = Cells(1, "G") & Cells(2, "G") & Cells(3, "G")
Next i
With Range(Cells(1, "E"), Cells(endRow, "E"))
.Formula = "=COUNTIF(F:F,F1)"
.Value = .Value
End With
'これ以降を追加
With Range("A1").CurrentRegion
.Sort key1:=Range("D1"), order1:=xlDescending, Header:=xlNo
.Sort key1:=Range("E1"), order1:=xlDescending, Header:=xlNo
End With
For i = endRow To 2 Step -1
If WorksheetFunction.CountIf(Range("F:F"), Cells(i, "F")) > 1 Then
Rows(i).Delete
End If
Next i
'↑まで追加
Range("F:G").Delete
Application.ScreenUpdating = True
End Sub 'この行まで
※ 元データの「順序を問う」行の重複行を削除していますので
元データに手を付けてはいけないのであれば別Sheetに表示させる方法になるかと思います。m(_ _)m
No.6
- 回答日時:
No2-3です。
>この式の場合は範囲を指定しないと駄目なのでしょうか?
エクセルのバージョンが2007以上なら、COUNTIFSが使えますので
=COUNTIFS(D:D,"*"&A2&"*",D:D,"*"&B2&"*",D:D,"*"&C2&"*")
と、列指定でもOKです。
No.4
- 回答日時:
こんばんは!
VBAになってしまいますが、一例です。
D列に「順序を問う」組み合わせ数、E列に「順不問」の組み合わせ数を表示させるとします。
F列以降を作業用の列として使用していますので、F列以降は全く使用していない!という前提です。
データは1行目からとしています。
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() 'この行から
Dim i As Long, endRow As Long
endRow = Cells(Rows.Count, "A").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "E"), Cells(endRow, "E"))
.Formula = "=A1&B1&C1"
.Value = .Value
End With
With Range(Cells(1, "D"), Cells(endRow, "D"))
.Formula = "=COUNTIF(E:E,E1)"
.Value = .Value
End With
Range("E:E").Delete
For i = 1 To endRow
With Cells(1, "G")
.Value = Cells(i, "A")
.Offset(1) = Cells(i, "B")
.Offset(2) = Cells(i, "C")
End With
Range(Cells(1, "G"), Cells(3, "G")).Sort key1:=Cells(i, "G"), order1:=xlAscending, Header:=xlNo
Cells(i, "F") = Cells(1, "G") & Cells(2, "G") & Cells(3, "G")
Next i
With Range(Cells(1, "E"), Cells(endRow, "E"))
.Formula = "=COUNTIF(F:F,F1)"
.Value = .Value
End With
Range("F:G").Delete
Application.ScreenUpdating = True
End Sub 'この行まで
※ 関数でないのでデータ変更があるたびにマクロを実行する必要があります。m(_ _)m
この回答への補足
ありがとうございます。VBAなら同じ組み合わせの重複を除いて、組み合わせ数の多い順に表記させることはできますか?
同じ組み合わせの重複を除くとは、
(順序を問う場合)
ABC 1
ABC 1
↓
ABC 1
ということです。
No.2
- 回答日時:
D列を作業列として結合した文字列表示にします。
=CONCATENATE(A1,B1,C1) で結合できますのでフィルドラックして下へコピー。
順序を問う組み合わせ
=COUNTIF(D:D,D1)
この式をフィルドラックして下へコピー。
順不同な組み合わせ
範囲が1から1000行目までの場合
=SUMPRODUCT(ISNUMBER(FIND(A1,D1:D1000))*ISNUMBER(FIND(B1,D1:D1000))*ISNUMBER(FIND(C1,D1:D1000)))
この式をフィルドラックして下へコピー。
No.1
- 回答日時:
3列しかないなら、作業列使ったほうが分かりよいと思うので
順序通り
D2セル =A2&B2&C2
下へオートフィル
E2セル =COUNTIF($D$2:$D$21,D2)
フィルハンドルダブルクリック
順不同 大文字小文字は判別しない。同じ文字(A14:C18セルのような)がある場合も考えて
G2セル
=D2
H2セル
=IF(G2=B2&C2&A2,"",B2&C2&A2)
I2セル
=IF(G2=C2&A2&B2,"",C2&A2&B2)
J2セル
=IF(ISNUMBER(MATCH(C2&B2&A2,G2:I2,0)),"",C2&B2&A2)
K2セル
=IF(ISNUMBER(MATCH(B2&A2&C2,G2:I2,0)),"",B2&A2&C2)
L2セル
=IF(ISNUMBER(MATCH(A2&C2&B2,G2:I2,0)),"",A2&C2&B2)
G2:L2セルを選択して下へオートフィル
M2セル
=COUNTIF($G$2:$L$21,D2)
フィルハンドルダブルクリック
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Excel(エクセル) ExcelのIF関数について 4 2023/05/24 12:54
- Excel(エクセル) Excel 文字列を結合するときに重複をなくしたい 関数・VBA 2 2022/12/12 10:40
- Java Java 南京錠 2 2023/02/04 11:46
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】スペースがいくつ入っ...
-
西暦や和暦の表示をyyyymmdd表...
-
【Microsoft Office Excel Comp...
-
Excelはなんで先頭の0を消すん...
-
Excelのセルを飛ばして入力する
-
別シートからの文字を変更
-
エクセルの行の抽出について質...
-
Excelのオートフィル
-
Excel 2019 のピボットテーブル...
-
スプレッドシート クエリ関数 1...
-
excelの不要な行の削除ができな...
-
Excel初心者です。 詳しい方、...
-
【Excel】セル内の時間帯が特定...
-
Excel初心者です。 詳しい方、...
-
EXACT関数とIF関数の組み合わせ...
-
Excelのグラフ軸について
-
スマートな関数を教えて下さい。
-
Excelで全角を半角にしたいので...
-
【マクロ】エクセルにかいてあ...
-
Excel:一部のフォントでセルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報