
エクセルVBAに詳しい方、ご教示願い致します。
当方VBA初心者でして、色々検索して自分なりにやってみているのですが、思い通りの処理とならず、ご教授いただけると幸いです。
Sheet1にリストがあります。
このリストの項目のうち、同じ部署内での2人の組み合わせパターンを全てSheet2へリストアップするというものです。
条件は部署が一緒であることのみで、部署によって人数が異なるので、対象者1名に対する組み合わせ個数は同部署人数-1、となります。ただ、対象者本人に対し組み合わせリストに本人が入ってしまっていても、VBA処理後に、手作業でA列とD列の重複削除を行えますので、問題ないのですが、人数と部署が多く、条件に一致する繰り返しのコピペを一致する数の分だけリストの上から下までループ処理したく、ご助力頂きますよう、何卒宜しくお願い致します。

A 回答 (3件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
こんばんは、
べたに考えてみました
Sub test()
Dim i As Long, n As Long, j As Long
Dim ary()
Dim lastRow As Long
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
ReDim ary(WorksheetFunction.Permut(lastRow, 2) / 2, 6)
j = 2
Do While .Cells(j, 1) <> ""
For i = j To lastRow - 1
If .Cells(j, 1) <> Cells(i + 1, 1) Then
ary(n, 0) = .Cells(j, 1)
ary(n, 1) = .Cells(j, 2)
ary(n, 2) = .Cells(j, 3)
ary(n, 3) = .Cells(i + 1, 1)
ary(n, 4) = .Cells(i + 1, 2)
ary(n, 5) = .Cells(i + 1, 3)
n = n + 1
End If
Next
j = j + 1
Loop
End With
Worksheets("Sheet2").Cells(2, 1).Resize(UBound(ary, 1), UBound(ary, 2)) = ary
End Sub
No.1
- 回答日時:
こんばんは
1行目はタイトル行で2行目からデータがあり、リストには重複はないものと仮定します。
人数が1人の部署がある場合、組み合わせは作成されません。
ご提示のリストは部署別に順に記載されているようですが、念のためマクロでもソートし直します。
(これにより、作成される部署の順序は変わる可能性があります。)
以下ではいかがでしょうか?
Sub Q12762938()
Dim sh As Worksheet, r As Range, v
Dim n As Long, i As Long, j As Long
Dim n1 As Long, n2 As Long
Set sh = Worksheets("Sheet1")
n = sh.Cells(Rows.Count, 1).End(xlUp).Row - 1
With Worksheets("Sheet2")
.Cells.ClearContents
If n < 1 Then Exit Sub
Set r = .Range("A1:C1").Resize(n + 1)
r.Value = sh.Range("A1:C1").Resize(n + 1).Value
r.Sort key1:=.Cells(1, 2), Header:=xlYes
Set r = .Range("A2:C2")
v = r.Resize(n).Value
r.Resize(n).ClearContents
n1 = 1
While n1 < n
n2 = n
For i = n1 To n2 - 1
If v(i + 1, 2) <> v(n1, 2) Then n2 = i: Exit For
Next i
For i = n1 To n2 - 1
For j = i + 1 To n2
r.Value = Array(v(i, 1), v(i, 2), v(i, 3))
r.Offset(, 3).Value = Array(v(j, 1), v(j, 2), v(j, 3))
Set r = r.Offset(1)
Next j
Next i
n1 = n2 + 1
Wend
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBAでtxtファイルを読み込む際にtabを認識したい
Visual Basic(VBA)
-
VBAのコードについて
Visual Basic(VBA)
-
VBAで、オートフィルタで非表示になっている行の高さを取得したい
Visual Basic(VBA)
-
4
VBAの質問です msg = ws.Cells(r, A").Value & "日に" & ws."
Visual Basic(VBA)
-
5
VBA CSV取り込みについて
Visual Basic(VBA)
-
6
シート指定について
Visual Basic(VBA)
-
7
Excelマクロのコードができる方に質問します。
Visual Basic(VBA)
-
8
シート名をセルの値にするマクロについての質問
Visual Basic(VBA)
-
9
対象フォルダの選択画面を出したい
Visual Basic(VBA)
-
10
【Excel VBA】表の列の値毎に分割するには?(値がブックのファイル名)
Visual Basic(VBA)
-
11
配列の書き出しコードについての質問
Visual Basic(VBA)
-
12
複数のcsvをVBAでマージする方法をご教示ください!
Visual Basic(VBA)
-
13
サブフォルダ含むすべてのフォルダの Excel 検索
Visual Basic(VBA)
-
14
Excel VBAでフォルダ内の全テキストファイルの任意データを取得について
Visual Basic(VBA)
-
15
連想配列について
Visual Basic(VBA)
-
16
このプログラムがわかりません
Visual Basic(VBA)
-
17
リストボックスについて
Excel(エクセル)
-
18
【関数orVBA】カーソルのある行を黄色にし、A列の値を別シートに表示できますか?
Visual Basic(VBA)
-
19
VBA 行入力について
Visual Basic(VBA)
-
20
VBA リストボックスをダブルクリックしデータを修正したいのですが…。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
【Excel】特定の文字を含むセル...
-
5
EXCEL VBA マクロ 実行する度に...
-
6
Do~Loopした回数をカウントしたい
-
7
switch の範囲指定
-
8
VB6,Ifから抜けるには?
-
9
findは動くがfindnextがマクロ...
-
10
VBの質問#if 0 then ってどう...
-
11
.htaccess RewriteEngine でリ...
-
12
Accessのレポートを自動でAcrob...
-
13
VBAでループ内で使う変数名を可...
-
14
VB.NET Excelを読み込んでDataT...
-
15
他の国だって汚染水を海に流し...
-
16
Excel VBAにて2つの処理を同時...
-
17
フォーム上のすべてのTextBoxを...
-
18
お家デートをしててハグを長い...
-
19
IQテストの数列
-
20
教えてください
おすすめ情報
公式facebook
公式twitter