Excelについての質問です。 A列 B C D E 1行 影山 田中 高橋 加藤 山田 2 田中 北山 松下 山田 設楽 3 佐藤 田中 二宮 山崎 奥山 上記のように名前

Excelについての質問です。 A列 B C D E 1行 影山 田中 高橋 加藤 山田 2 田中 北山 松下 山田 設楽 3 佐藤 田中 二宮 山崎 奥山 上記のように名前 が記載されているのが10列25行あります。 このときの同じ人物同士の組み合わせがいくつあるのかを関数を使ってカウントできないでしょうか? 例えば上記でいうと、田中と山田の組み合わせが2個のように。 これまでは数えてやっていたみたいなのですが、前任者がサボっていたようでこのようなシートが多くあり、なんとかならないかと思いまして。 よろしくお願いいたします。

Excel99閲覧

ベストアンサー

0

VBA で良かったですか?ダメならスルーということで・・・ 標準モジュールに以下を記述し、Samp1 を実行してみます 処理対象は、アクティブシートの A1 ~ A 最終行で、 各行最終列は空欄前まで 結果は、新規シートに書き出します Option Explicit Public Sub Samp1()    Dim dic As Object    Dim vA As Variant, vK As Variant, v As Variant    Dim i As Long, j As Long, k As Long, n As Long, m As Long    Set dic = CreateObject("Scripting.Dictionary")    With Range("A1", Cells(Rows.Count, "A").End(xlUp))       For m = 1 To .Count          vA = Array()          k = LBound(vA)          n = UBound(vA)          With .Cells(m)             For Each v In Range(.Cells, .End(xlToRight)).Value                n = n + 1                ReDim Preserve vA(n)                For i = n To k + 1 Step -1                   If (vA(i - 1) < v) Then Exit For                   vA(i) = vA(i - 1)                Next                vA(i) = v             Next          End With          For i = k To n - 1             For j = i + 1 To n                vK = vA(i) & "-" & vA(j)                dic(vK) = dic(vK) + 1             Next          Next       Next    End With    If (dic.Count > 0) Then       ReDim vA(1 To dic.Count + 1, 1 To 2)       n = 1       vA(n, 1) = "組合せ": vA(n, 2) = "回数"       For Each vK In dic.Keys          n = n + 1          vA(n, 1) = vK          vA(n, 2) = dic(vK)       Next       Application.ScreenUpdating = False       With Worksheets.Add          With .Range("A1").Resize(n, 2)             .Value = vA             .Sort .Cells(1), xlAscending, Header:=xlYes             .Rows(1).HorizontalAlignment = xlCenter             .Columns.AutoFit          End With       End With       Application.ScreenUpdating = True    End If    Set dic = Nothing End Sub

具体的にありがとうございます。 ただ、私がVBAがわからないのでちょっとやり方を調べてからになるので出来るかどうかの返信が遅なくなるかと思います。 関数以外の方法があると知らなかったので勉強になります。

ThanksImg質問者からのお礼コメント

できました! ID番号もちゃんと数字で表示されます! ありがとうございました!

お礼日時:7/26 14:31

その他の回答(1件)