[ ‰‚߂Ă̕û‚Ö | ˆê——(ÅVXV‡) | ‘S•¶ŒŸõ | ‰ß‹ŽƒƒO ]
@
wVBA‚Å2‚‚̃uƒbƒNŠÔ‚ÅAƒL[‚ð‚à‚Æ‚Ƀf[ƒ^‚ðŽæ“¾‚·‚éƒR[ƒh‚ÌC³xi‚Ü‚«j
2‚‚̃uƒbƒNŠÔ‚ÅAƒL[‚ð‚à‚Æ‚Ƀf[ƒ^‚ðŽæ“¾‚·‚éƒR[ƒh‚ɒljÁC³‚ð‚µ‚½‚¢‚Å‚·‚ªA
‰SŽÒ‚Ì‚½‚ßs‚«‹l‚Á‚Ä‚¢‚Ü‚·B
‚ǂȂ½‚©ƒR[ƒh‚ð‹³‚¦‚Ä‚‚¾‚³‚¢B
ŸŒ»Ý‚̈—“à—e
‘S‘Ì󋵃uƒbƒN‚Ì–¾×ƒV[ƒg‚ÌF—ñi–¼‘Oj‚ðƒ`ƒFƒbƒNƒuƒbƒN‚ÌŠ‘®•”ˆê——ƒV[ƒg‚Ì2s–ÚˆÈ~‚©‚ç’T‚µ‚ÄŠY“–‚ª‚ ‚Á‚½ê‡‚ÉAƒ`ƒFƒbƒNƒuƒbƒN‚̈ê”Ô¶‘¤‚̃V[ƒg‚ÉA1ƒZƒ‹‚©‚ç“]‹L‚·‚éB
Ÿ’ljÁC³‚µ‚½‚¢“à—e
1.‘S‘Ì󋵃uƒbƒN‚Ì–¾×ƒV[ƒg‚ÌF—ñi–¼‘Oj‚ðƒ`ƒFƒbƒNƒuƒbƒN‚ÌŠ‘®•”ˆê——ƒV[ƒg‚Ì2s–ÚˆÈ~‚©‚ç’T‚µ‚ÄŠY“–‚ª‚È‚©‚Á‚½ê‡‚ÍAƒ`ƒFƒbƒNƒuƒbƒN‚̈ê”Ô¶‘¤‚̃V[ƒg‚ÌI2ƒZƒ‹‚©‚çAŠY“–ŽÒ‚µ‚È‚©‚Á‚½•û‚ÌŽ–¼‚ð“]‹L‚µ‚½‚¢
2.ŠY“–ŽÒ‚ª‘½‚¢ê‡c‚É’·‚‚È‚Á‚Ä‚µ‚Ü‚¤‚½‚ßA•”‚²‚Æ‚É1—ñ‚ɂ‚«4l‚¸‚•\‹L‚É‚È‚é‚æ‚¤‚É‚µ‚½‚¢
yŒŸõŒ³z
‘S‘Ì󋵃uƒbƒN‚Ì–¾×ƒV[ƒg
iA`AH—ñ‚܂Ńf[ƒ^‚ª‚ ‚èAE—ñi]‹Æˆõ”Ô†j•F—ñi–¼‘Oj‚ªd•¡‚µ‚Ä‚¢‚Ü‚·j
¡ƒV[ƒg‚Ìó‘Ô
A`D—ñ c E—ñ @@F—ñ c G`AH—ñ
@@@@@11111 @“c’†‘¾˜Y
@@@@@11111 @“c’†‘¾˜Y
@@@@@22222 @²“¡ŽŸ˜Y
@@@@@33333 @ŽR“cŽO˜Y
@@@@@44444 @‚‹´Žl˜Y
@@@@@55555 @‹g“cŒÜ˜Y
@@@@@66666 @²X–ؘZ˜Y
@@@@@66666 @²X–ؘZ˜Y
@@@@@77777 @“n糎µ˜Y
@@@@@@@@@@E
@@@@@@@@@@E
yŒŸõæz
ƒ`ƒFƒbƒNƒuƒbƒN‚ÌŠ‘®•”ˆê——ƒV[ƒg
iA`G—ñ‚܂Ńf[ƒ^‚ª‚ ‚èA1s–Ú‚Í•”–¼‚Å2s–ÚˆÈ~‚Í]‹Æˆõ‚Ì–¼‘O‚Å‚·B
ƒf[ƒ^‚Ìd•¡‚͂Ȃ¢‚Å‚·j
¡ƒV[ƒg‚Ìó‘Ô
A—ñ B—ñ c F—ñ
ƒVƒXƒeƒ€ˆê•” c ƒVƒXƒeƒ€Žµ•”
“c’†‘¾˜Y @@@“n糎µ˜Y@@
²“¡ŽŸ˜Y
ŽR“cŽO˜Y
‚‹´Žl˜Y
‹g“cŒÜ˜Y@@@@@@E
²X–ؘZ˜Y@@@@@E
¡ƒV[ƒg‚P‚É“]‹LŠó–]‚̃Cƒ[ƒW
A—ñ@@@@@@B—ñ@@@@C—ñ@@c@@I—ñ
ƒVƒXƒeƒ€ˆê•”@“c’†‘¾˜Y@‹g“cŒÜ˜Y@@@ˆÉ“¡”ª˜Y
@@@@@@ @²“¡ŽŸ˜Y@²X–ؘZ˜Y@@’†‘º‹ã˜Y
@@@@@@ @ŽR“cŽO˜Y
@@@@@@ @‚‹´Žl˜Y
ƒVƒXƒeƒ€Žµ•”@“n糎µ˜Y
Sub test1()
Dim mySheet As Worksheet
Dim dicBU As Object, dicNM As Object
Dim keyBU As Variant, keyNM As Variant
Dim myR As Long, myC As Long
Set dicBU = CreateObject("Scripting.Dictionary")
Set mySheet = Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm").Worksheets("Š‘®•”ˆê——")
With mySheet
For myC = 1 To .Cells(1, .Columns.Count).End(xlToLeft).Column Set dicNM = CreateObject("Scripting.Dictionary") For myR = 2 To .Cells(.Rows.Count, myC).End(xlUp).Row dicNM(.Cells(myR, myC).Value) = Empty Next myR Set dicBU(.Cells(1, myC).Value) = dicNM Next myC End With
Set mySheet = Workbooks("ŽÐ“àH”“Š“üó‹µ_‘S‘Ì .xlsx").Worksheets("–¾×")
With mySheet
For Each keyBU In dicBU.Keys Set dicNM = dicBU(keyBU) For Each keyNM In dicNM.Keys Debug.Print keyNM If WorksheetFunction.CountIf(.Columns(6), keyNM) = 0 Then dicNM.Remove keyNM End If Next keyNM If dicNM.Count = 0 Then dicBU.Remove keyBU Else Set dicBU(keyBU) = dicNM End If Next keyBU End With
With Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm")
Set mySheet = Sheets(1) End With With mySheet myR = 1 For Each keyBU In dicBU.Keys Set dicNM = dicBU(keyBU) myC = dicNM.Count keyNM = dicNM.Keys .Cells(myR, 1).Resize(myC).Value = keyBU .Cells(myR, 2).Resize(myC).Value = WorksheetFunction.Transpose(keyNM) myR = myR + myC Next keyBU End With
ƒ Žg—p ExcelFOffice365AŽg—p OSFWindows10 „
iƒ}ƒij 2022/09/13(‰Î) 18:37
iƒ}ƒij 2022/09/13(‰Î) 18:56
Sub test1() Dim mySheet As Worksheet 'ì‹Æ—p•Ï”iì‹ÆƒV[ƒg‚ðŽw’èj Dim dicBU As Object '•”—pDictionary Dim dicNM As Object 'ì‹Æ—p•Ï”i•”“à‚̃ƒ“ƒo[—pDictionaryj Dim keyBU As Variant 'ì‹Æ—p•Ï”i•”j Dim keyNM As Variant 'ì‹Æ—p•Ï”iƒƒ“ƒo[j Dim myR As Long 'ƒJƒEƒ“ƒ^•Ï”isj Dim myC As Long 'ƒJƒEƒ“ƒ^•Ï”i—ñj
Set dicBU = CreateObject("Scripting.Dictionary") '•”—pDictionary‚ð錾 Set mySheet = Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm").Worksheets("Š‘®•”ˆê——") 'ì‹Æƒ[ƒNƒV[ƒg‚P‚ðÝ’è
With mySheet For myC = 1 To .Cells(1, .Columns.Count).End(xlToLeft).Column 'ƒV[ƒg“à1s–ÚŠe—ñ‚ð„‰ñ Set dicNM = CreateObject("Scripting.Dictionary") 'ƒƒ“ƒo[ãDictionary‚ð‰Šú‰» For myR = 2 To .Cells(.Rows.Count, myC).End(xlUp).Row '—ñ‚²‚ƂɊes‚ð„‰ñ dicNM(.Cells(myR, myC).Value) = Empty 'ƒƒ“ƒo[—pDictionary‚ÌKey‚Ƀƒ“ƒo[–¼‚ð“ü‚ê‚éid•¡”ð‚¯j Next myR Set dicBU(.Cells(1, myC).Value) = dicNM '•”—pDictionary‚ÌItem‚Ƀƒ“ƒo[Dictionary‚ð“ü‚ê‚é Next myC End With
Set mySheet = Workbooks("ŽÐ“àH”“Š“üó‹µ_‘S‘Ì .xlsx").Worksheets("–¾×") 'ì‹Æƒ[ƒNƒV[ƒg‚Q‚ðÝ’è
With mySheet For Each keyBU In dicBU.Keys '•”—pDictionary‚ð„‰ñ Set dicNM = dicBU(keyBU) 'ì‹Æ—p•Ï”‚ÉItem‚̃ƒ“ƒo[Dictionary‚ð“ü‚ê‚é For Each keyNM In dicNM.Keys '•”“àƒƒ“ƒo[Dictionary‚ð„‰ñ Debug.Print keyNM If WorksheetFunction.CountIf(.Columns(6), keyNM) = 0 Then 'ì‹Æƒ[ƒNƒV[ƒg‚Q‚ÌF—ñ‚Ƀƒ“ƒo[–¼‚ª‚È‚¯‚ê‚Î dicNM.Remove keyNM 'ƒƒ“ƒo[Dictionary‚©‚ç–•Á End If Next keyNM If dicNM.Count = 0 Then 'ƒƒ“ƒo[Dictionary‚̃f[ƒ^”‚ª0‚Ìê‡ dicBU.Remove keyBU '•”—pDictionary‚©‚ç•”‚²‚Æ–•Á Else 'ƒf[ƒ^‚ª1ˆÈã‚ ‚éê‡‚Í Set dicBU(keyBU) = dicNM '•”—pDictionary‚Ƀƒ“ƒo[Dictionary‚ðĂѓü‚ê‚é End If Next keyBU End With
'ªªªªªªªªªªªªªªªªªªªª@‚±‚±‚܂Ńf[ƒ^ŽûW@ªªªªªªªªªªªªªªªªªªªª
'««««««««««««««««««««@‚±‚±‚©‚ç—v‰üC•”•ª@««««««««««««««««««««
With Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm") '«u.v‚ª”²‚¯‚Ä‚¢‚é‚̂ũ‚̃uƒbƒN‚ł͂ȂActivesheet‚È‚±‚ƂɒˆÓ Set mySheet = Sheets(1) 'ì‹Æƒ[ƒNƒV[ƒg‚R‚ðÝ’è End With
With mySheet myR = 1 'sƒJƒEƒ“ƒ^‚ð1‚ÉÝ’è For Each keyBU In dicBU.Keys '•”—pDictionary‚ÌKeyi•”ƒŠƒXƒgj‚ð„‰ñ Set dicNM = dicBU(keyBU) 'ì‹Æ—p•Ï”‚ÉItem‚̃ƒ“ƒo[Dictionary‚ð“ü‚ê‚é myC = dicNM.Count '—ñƒJƒEƒ“ƒ^‚Ƀƒ“ƒo[Dictionary‚Ì—v‘f”‚ð“ü‚ê‚é keyNM = dicNM.Keys 'ì‹Æ—p•Ï”‚Ƀƒ“ƒo[Dictionary‚ÌKeyiƒƒ“ƒo[ƒŠƒXƒgj‚ð“ü‚ê‚é .Cells(myR, 1).Resize(myC).Value = keyBU '1—ñ–Ú‚É•”–¼‚ð“ü—Í .Cells(myR, 2).Resize(myC).Value = WorksheetFunction.Transpose(keyNM) '2—ñ–ڂɃƒ“ƒo[ƒŠƒXƒg‚ð“ü—Í myR = myR + myC '—ñƒJƒEƒ“ƒ^•ªs‚ð‰º‚°‚é Next keyBU End With
End Sub
—ûK‰Û‘è‚̂‚à‚è‚ł܂¸®—‚¾‚¯‚µ‚Ă݂܂µ‚½B
Œã”¼•”•ª‚¾‚¯’¼‚¹‚Αåä•vH‚©‚Ç‚¤‚©l‚¦‚Ă݂½‚¢‚ÆŽv‚¢‚Ü‚·B
i‰ºŽè‚̉¡D‚«j 2022/09/13(‰Î) 19:17
iƒ}ƒij 2022/09/13(‰Î) 19:38
¡‚P
‘S‘Ì󋵃uƒbƒN‚Ì–¾×ƒV[ƒg‚Ì•À‚ч‚Íd—v‚Å‚·‚©H
¡‚Q
•”‚²‚Æ‚É1—ñ‚ɂ‚«4l‚¸‚‚Ƃ̂±‚Ƃł·‚ªA4l–¢–ž‚Ì•”‚Ìꇂłà4s‚Æ‚µ‚Ă悢‚Å‚·‚©H
‚Ü‚½A0l‚Ì•”‚Ío—Í‚ðÈ—ª‚µ‚Ă悢‚Å‚·‚©H
i‚à‚±‚È‚Qj 2022/09/13(‰Î) 19:42
‚±‚ñ‚ÈŽd—l‚Å‚æ‚낵‚¢‚Å‚·‚©
i‰ºŽè‚̉¡D‚«j 2022/09/13(‰Î) 19:55
Sub test() Dim ws’Šo As Worksheet Dim wsˆê—— As Worksheet Dim ws–¾× As Worksheet Dim myList, j As Long, k As Long Dim dic1 As Object, dic2 As Object, key Dim bu As String, nm As String Dim n As Long Dim r As Long, c As Long
Set ws’Šo = Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm").Worksheets(1) Set wsˆê—— = Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm").Worksheets("Š‘®•”ˆê——") Set ws–¾× = Workbooks("ŽÐ“àH”“Š“üó‹µ_‘S‘Ì .xlsx").Worksheets("–¾×")
ws’Šo.UsedRange.ClearContents myList = wsˆê——.Cells(1).CurrentRegion.Value
Set dic1 = CreateObject("Scripting.Dictionary") Set dic2 = CreateObject("Scripting.Dictionary")
For k = 1 To UBound(myList, 2) bu = myList(1, k) Set dic1(bu) = CreateObject("system.collections.arraylist") Set dic2(bu) = CreateObject("system.collections.arraylist")
For j = 2 To UBound(myList, 1) nm = myList(j, k) If nm <> "" Then If WorksheetFunction.CountIf(ws–¾×.Columns(6), nm) Then dic1(bu).Add nm Else dic2(bu).Add nm End If End If Next Next
r = 1 For Each key In dic1.Keys c = 1 ws’Šo.Cells(r, c).Value = key Do While dic1(key).Count > 0 c = c + 1 n = Application.Min(dic1(key).Count, 4) ws’Šo.Cells(r, c).Resize(n).Value _ = Application.Transpose(dic1(key).getrange(0, n).toarray) dic1(key).removerange 0, n Loop c = 8 Do While dic2(key).Count > 0 c = c + 1 n = Application.Min(dic2(key).Count, 4) ws’Šo.Cells(r, c).Resize(n).Value _ = Application.Transpose(dic2(key).getrange(0, n).toarray) dic2(key).removerange 0, n Loop r = r + 4 Next
End Sub
iƒ}ƒij 2022/09/13(‰Î) 20:46
iƒ}ƒij 2022/09/13(‰Î) 21:15
Sub test1() Dim mySheet As Worksheet 'ì‹Æ—p•Ï”iì‹ÆƒV[ƒg‚ðŽw’èj Dim dicBU As Object '•”—pDictionary Dim dicNM As Object 'ì‹Æ—p•Ï”i•”“à‚̃ƒ“ƒo[—pDictionaryj Dim dicBU2 As Object Dim dicNM2 As Object Dim keyBU As Variant 'ì‹Æ—p•Ï”i•”j Dim keyNM As Variant 'ì‹Æ—p•Ï”iƒƒ“ƒo[j Dim myR As Long 'ƒJƒEƒ“ƒ^•Ï”isj Dim myC As Long 'ƒJƒEƒ“ƒ^•Ï”i—ñj
'1.ì‹ÆƒV[ƒg‚P‚©‚ç•”‚ƃƒ“ƒo[‚̈ꗗDictionary‚ð쬂·‚é
Set dicBU = CreateObject("Scripting.Dictionary") '•”—pDictionary‚ð錾 Set mySheet = Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm").Worksheets("Š‘®•”ˆê——") 'ì‹Æƒ[ƒNƒV[ƒg‚P‚ðÝ’è With mySheet For myC = 1 To .Cells(1, .Columns.Count).End(xlToLeft).Column 'ƒV[ƒg“à1s–ÚŠe—ñ‚ð„‰ñ Set dicNM = CreateObject("Scripting.Dictionary") 'ƒƒ“ƒo[ãDictionary‚ð‰Šú‰» For myR = 2 To .Cells(.Rows.Count, myC).End(xlUp).Row '—ñ‚²‚ƂɊes‚ð„‰ñ dicNM(.Cells(myR, myC).Value) = Empty 'ƒƒ“ƒo[—pDictionary‚ÌKey‚Ƀƒ“ƒo[–¼‚ð“ü‚ê‚éid•¡”ð‚¯j Next myR Set dicBU(.Cells(1, myC).Value) = dicNM '•”—pDictionary‚ÌItem‚Ƀƒ“ƒo[Dictionary‚ð“ü‚ê‚é Next myC End With
'2.ì‹ÆƒV[ƒg‚Q‚©‚ç•”‚ƃƒ“ƒo[‚̈ꗗDictionary‚ðŠY“–ŽÒ‚Æ”ñŠY“–ŽÒ‚Ì2‚‚ɕª‚¯‚é
Set dicBU2 = CreateObject("Scripting.Dictionary") '”ñŠY“–ŽÒ—p‚Ì•”—pDictionary‚ð錾 Set mySheet = Workbooks("ŽÐ“àH”“Š“üó‹µ_‘S‘Ì .xlsx").Worksheets("–¾×") 'ì‹Æƒ[ƒNƒV[ƒg‚Q‚ðÝ’è With mySheet For Each keyBU In dicBU.keys '•”—pDictionary‚ð„‰ñ Set dicNM = dicBU(keyBU) 'ì‹Æ—p•Ï”‚ÉItem‚̃ƒ“ƒo[Dictionary‚ð“ü‚ê‚é Set dicNM2 = dicNM '”ñŠY“–ŽÒ—p‚̃ƒ“ƒo[Dictionary‚ð•¡» For Each keyNM In dicNM.keys '•”“àƒƒ“ƒo[Dictionary‚ð„‰ñ Debug.Print keyNM If WorksheetFunction.CountIf(.Columns(6), keyNM) = 0 Then 'ì‹Æƒ[ƒNƒV[ƒg‚Q‚ÌF—ñ‚Ƀƒ“ƒo[–¼‚ª‚È‚¯‚ê‚Î dicNM.Remove keyNM 'ƒƒ“ƒo[Dictionary‚©‚ç–•Á End If Next keyNM
If dicNM.Count > 0 Then 'ŠY“–ƒƒ“ƒo[Dictionary‚ÌƒŠƒXƒg‚ª‚ ‚éê‡ For Each keyNM In dicNM.keys 'ŠY“–ƒƒ“ƒo[Dictionary‚É‚ ‚郃“ƒo[‚ð dicNM2.Remove keyNM '”ñŠY“–ŽÒ—p‚̃ƒ“ƒo[Dictionary‚©‚ç–•Á Next keyNM End If
Set dicBU(keyBU) = dicNM '•”—pDictionary‚ÉŠY“–ƒƒ“ƒo[Dictionary‚ð“ü‚ê‚é Set dicBU2(keyBU) = dicNM2 '•¡»Dictionary‚É”ñŠY“–ƒƒ“ƒo[Dictionary‚ð“ü‚ê‚é Next keyBU End With
'3.ì‹ÆƒV[ƒg‚R‚ÉŠY“–ŽÒiB`H—ñjA”ñŠY“–ŽÒiI`O—ñj‚̃f[ƒ^‚ð“\‚è•t‚¯‚é
With Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm") '«u.v‚ª”²‚¯‚Ä‚¢‚é‚̂ũ‚̃uƒbƒN‚ł͂ȂActivesheet‚È‚±‚ƂɒˆÓ Set mySheet = Sheets(1) 'ì‹Æƒ[ƒNƒV[ƒg‚R‚ðÝ’è End With With mySheet myR = 1 'sƒJƒEƒ“ƒ^‚ð1‚ÉÝ’è For Each keyBU In dicBU.keys '•”—pDictionary‚ÌKeyi•”ƒŠƒXƒgj‚ð„‰ñ .Cells(myR, 1).Value = keyBU 'A—ñ‚É•”–¼‚ð“ü—Í .Cells(myR, 2).Resize(4, 7).Value = SampleFunction(dicBU(keyBU)) 'B`H—ñ‚ÉŠY“–ƒƒ“ƒo[ƒŠƒXƒg‚ð“ü—Í .Cells(myR, 9).Resize(4, 7).Value = SampleFunction(dicBU2(keyBU)) 'I`O—ñ‚É”ñŠY“–ƒƒ“ƒo[ƒŠƒXƒg‚ð“ü—Í myR = myR + 4 'sƒJƒEƒ“ƒ^‚ð4‚Âã‚°‚é Next keyBU End With End Sub
4~7‚ÌƒŠƒXƒg‚ð‚‚‚éSampleFunction‚͂܂½¡“x‚É‚µ‚Ü‚·B
i‰ºŽè‚̉¡D‚«j 2022/09/13(‰Î) 21:30
‚à‚±‚È‚Q—l
¡‚P‘S‘Ì󋵃uƒbƒN‚Ì–¾×ƒV[ƒg‚Ì•À‚ч‚Íd—v‚ł͂Ȃ¢‚Å‚·B
¡4l–¢–ž‚Ì•”‚ÌꇂÌs‚ðŠY“–ŽÒ”‚É‚·‚邱‚Ƃ͂ł«‚Ü‚·‚©B
‚Ü‚½A0l‚Ì•”‚Ío—Í‚ðÈ—ª‚µ‚Ä‘åä•v‚Å‚·B
‚¢‚ë‚¢‚ë’•¶‚ð•t‚¯‚Ä‚µ‚Ü‚¢A‹°k‚Å‚·B
i‚Ü‚«j 2022/09/14(…) 10:35
Sub test1() Const GROUP_ROW As Long = 4 'o—͗̈æ‚Ì’PˆÊs”
Dim mySheet As Worksheet 'ì‹Æ—p•Ï”iì‹ÆƒV[ƒg‚ðŽw’èj Dim dicBU As Object 'ì‹Æ—p•Ï”i•”—pDictionaryj Dim dicNM As Object 'ì‹Æ—p•Ï”i•”“à‚̃ƒ“ƒo[—pDictionaryj Dim dicBU2 As Object 'ì‹Æ—p•Ï”i”ñŠY“–ŽÒ•”—pDictionaryj Dim dicNM2 As Object 'ì‹Æ—p•Ï”i”ñŠY“–ŽÒƒƒ“ƒo[—pDictionaryj Dim keyBU As Variant 'ì‹Æ—p•Ï”i•”j Dim keyNM As Variant 'ì‹Æ—p•Ï”iƒƒ“ƒo[j Dim maxCnt As Long '•”‚²‚Æ‚Ìő僃“ƒo[”‚ð”cˆ¬‚µ“]‹Læ‚ð’²®‚·‚邽‚߂̕ϔ Dim myR As Long '“]‹Læ‚Ìs Dim myC As Long '“]‹Læ‚ÌAŠY“–ŽÒE”ñŠY“–ŽÒ‚ð•\ަ‚·‚é—ñ”
'1.ì‹ÆƒV[ƒg‚P‚©‚ç•”‚ƃƒ“ƒo[‚̈ꗗDictionary‚ð쬂·‚é
Set dicBU = CreateObject("Scripting.Dictionary") '•”—pDictionary‚ð錾 Set mySheet = Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm").Worksheets("Š‘®•”ˆê——") 'ì‹Æƒ[ƒNƒV[ƒg‚P‚ðÝ’è With mySheet For myC = 1 To .Cells(1, .Columns.Count).End(xlToLeft).Column 'ƒV[ƒg“à1s–ÚŠe—ñ‚ð„‰ñ Set dicNM = CreateObject("Scripting.Dictionary") 'ƒƒ“ƒo[ãDictionary‚ð‰Šú‰» For myR = 2 To .Cells(.Rows.Count, myC).End(xlUp).Row '—ñ‚²‚ƂɊes‚ð„‰ñ dicNM(.Cells(myR, myC).Value) = Empty 'ƒƒ“ƒo[—pDictionary‚ÌKey‚Ƀƒ“ƒo[–¼‚ð“ü‚ê‚éid•¡”ð‚¯j Next myR Set dicBU(.Cells(1, myC).Value) = dicNM '•”—pDictionary‚ÌItem‚Ƀƒ“ƒo[Dictionary‚ð“ü‚ê‚é If dicNM.Count > maxCnt Then 'ő僃“ƒo[”‚ª‚»‚ê‚܂łÌÅ‘å’l‚æ‚è‘å‚«‚¢ê‡‚Í maxCnt = dicNM.Count 'ő僃“ƒo[”‚ðXV‚·‚é End If Next myC End With
'2.ì‹ÆƒV[ƒg‚Q‚©‚ç•”‚ƃƒ“ƒo[‚̈ꗗDictionary‚ðŠY“–ŽÒ‚Æ”ñŠY“–ŽÒ‚Ì2‚‚ɕª‚¯‚é
Set dicBU2 = CreateObject("Scripting.Dictionary") '”ñŠY“–ŽÒ—p‚Ì•”—pDictionary‚ð錾 Set mySheet = Workbooks("ŽÐ“àH”“Š“üó‹µ_‘S‘Ì .xlsx").Worksheets("–¾×") 'ì‹Æƒ[ƒNƒV[ƒg‚Q‚ðÝ’è With mySheet For Each keyBU In dicBU.keys '•”—pDictionary‚ð„‰ñ Set dicNM = dicBU(keyBU) 'ì‹Æ—p•Ï”‚ÉItem‚̃ƒ“ƒo[Dictionary‚ð“ü‚ê‚é Set dicNM2 = CreateObject("Scripting.Dictionary") '”ñŠY“–ƒƒ“ƒo[—pDictionary‚ð錾 For Each keyNM In dicNM.keys '•”“àƒƒ“ƒo[Dictionary‚ð„‰ñ Debug.Print keyNM If WorksheetFunction.CountIf(.Columns(6), keyNM) = 0 Then 'ì‹Æƒ[ƒNƒV[ƒg‚Q‚ÌF—ñ‚Ƀƒ“ƒo[–¼‚ª‚È‚¯‚ê‚Î dicNM.Remove keyNM 'ƒƒ“ƒo[Dictionary‚©‚ç–•Á dicNM2(keyNM) = Empty '”ñŠY“–ƒƒ“ƒo[Dictionary‚ÌKey‚ɂɃƒ“ƒo[–¼‚ð“ü‚ê‚é End If Next keyNM
Set dicBU(keyBU) = dicNM '•”—pDictionary‚ÉŠY“–ƒƒ“ƒo[Dictionary‚ð“ü‚ê‚é Set dicBU2(keyBU) = dicNM2 '•¡»Dictionary‚É”ñŠY“–ƒƒ“ƒo[Dictionary‚ð“ü‚ê‚é Next keyBU End With
'3.ì‹ÆƒV[ƒg‚R‚ÉŠY“–ŽÒiB`H—ñjA”ñŠY“–ŽÒiI`O—ñj‚̃f[ƒ^‚ð“\‚è•t‚¯‚é
With Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm") '«u.v‚ª”²‚¯‚Ä‚¢‚é‚̂ũ‚̃uƒbƒN‚ł͂ȂActivesheet‚È‚±‚ƂɒˆÓ Set mySheet = Sheets(1) 'ì‹Æƒ[ƒNƒV[ƒg‚R‚ðÝ’è End With myC = Int(maxCnt / GROUP_ROW) + 1 'ŠY“–ŽÒE”ñŠY“–ŽÒ‚ð•\ަ‚·‚é—ñ” With mySheet myR = 1 'sƒJƒEƒ“ƒ^‚ð1‚ÉÝ’è For Each keyBU In dicBU.keys '•”—pDictionary‚ÌKeyi•”ƒŠƒXƒgj‚ð„‰ñ .Cells(myR, 1).Value = keyBU 'A—ñ‚É•”–¼‚ð“ü—Í .Cells(myR, 2).Resize(GROUP_ROW, myC).Value = _ SampleFunction(dicBU(keyBU), GROUP_ROW, myC) 'ŠY“–ƒƒ“ƒo[ƒŠƒXƒg‚ð“ü—Í .Cells(myR, 3).Offset(, myC).Resize(GROUP_ROW, myC).Value = _ SampleFunction(dicBU2(keyBU), GROUP_ROW, myC) '”ñŠY“–ƒƒ“ƒo[ƒŠƒXƒg‚ð“ü—Í myR = myR + GROUP_ROW 'sƒJƒEƒ“ƒ^‚ðGROUP_ROW•ªã‚°‚é
Next keyBU End With End Sub
Function SampleFunction(objDic As Object, rCnt As Long, cCnt As Long) As Variant() 'objDic‚ÌKeysƒŠƒXƒg‚ðrCnts~cCnt—ñ‚Ì”z—ñ‚ɕϊ·‚·‚é Dim tmp() As Variant Dim var As Variant Dim iR As Long Dim iC As Long Dim i As Long
ReDim tmp(1 To rCnt, 1 To cCnt) '‰¼”z—ñ‚ðs~—ñ”‚ÅÄ’è‹` If objDic.Count > 0 Then 'ˆø”‚ÌDictionary‚ª‹ó‚łȂ¯‚ê‚Î var = objDic.keys 'Keys‚ð”z—ñ‚É“ü‚ê‚Ä For i = 0 To UBound(var) '—v‘f”•ª„‰ñ iC = 1 + (i \ rCnt) '—ñ‚Ì’l‚Ís”‚ÅŠ„‚Á‚½¤ If iC > cCnt Then Exit For '—ñ”‚ª”z—ñ‚ÌãŒÀ‚ð’´‚¦‚½‚çI—¹ iR = 1 + (i Mod rCnt) 's‚Ì’l‚Ís”‚Ìè—] tmp(iR, iC) = var(i) '‰¼”z—ñ‚ÉKey‚ð“ü‚ê‚é Next End If SampleFunction = tmp End Function
‚©‚Ȃ葂«Š·‚¦‚Ä‚µ‚Ü‚¢‚Ü‚µ‚½B
‚à‚µ‚©‚µ‚½‚ç7—ñŒÅ’è‚Ås”‚ð•Ï“®‚³‚¹‚½•û‚ª‚æ‚©‚Á‚½‚Ì‚©‚à‚µ‚ê‚È‚¢‚ÆŽv‚¢Žn‚߂Ă¢‚Ü‚·B
i‰ºŽè‚̉¡D‚«j 2022/09/14(…) 13:29
1“_AŽ„‚Ìà–¾‚ª•ª‚©‚è‚É‚‚‚Ä‚·‚݂܂¹‚ñB
‚â‚肽‚¢‚±‚Æ1.‚ÌŠY“–ŽÒ‚È‚µ‚ÌŒŸõ•û–@‚ª”½‘΂łµ‚½‚Ì‚ÅA
‰ü‚߂ċLÚ‚µ‚Ü‚·B
‚±‚ê‚Å“`‚í‚è‚Ü‚·‚Å‚µ‚傤‚©B
@ŒŸõŒ³F‘S‘Ì󋵃uƒbƒN‚Ì–¾×ƒV[ƒgAŒŸõKEY‚ÍF—ñi–¼‘Oj
@ŒŸõæFƒ`ƒFƒbƒNƒuƒbƒN‚ÌŠ‘®•”ˆê——ƒV[ƒg‚Ì2s–ÚˆÈ~
@@@@@¨ŠY“–‚ª‚È‚¢ê‡‚ÍAƒ`ƒFƒbƒNƒuƒbƒN‚̃V[ƒg1‚É‘S‘Ì󋵃uƒbƒN‚Ì–¾×ƒV[ƒg‚ÌŠY“–‚µ‚È‚©‚Á‚½•û‚ÌŽ–¼‚ð“]‹L‚µ‚½‚¢
yŒŸõŒ³F‘S‘Ì󋵃uƒbƒN‚Ì–¾×ƒV[ƒgz
A`D—ñ c E—ñ @@F—ñ c G`AH—ñ
@@@@@11111 @“c’†‘¾˜Y
@@@@@11111 @“c’†‘¾˜Y
@@@@@22222 @²“¡ŽŸ˜Y
@@@@@99999 @~ŽR~˜Y
@@@@@@@@@@E
@@@@@@@@@@E
yŒŸõæƒ`ƒFƒbƒNƒuƒbƒN‚ÌŠ‘®•”ˆê——ƒV[ƒgz
A—ñ B—ñ c F—ñ
ƒVƒXƒeƒ€ˆê•” c ƒVƒXƒeƒ€Žµ•”
“c’†‘¾˜Y @@@“n糎µ˜Y@@
²“¡ŽŸ˜Y
@@@@@@@@@@E
@@@@@@@@@@E
¡ƒV[ƒg‚P‚É“]‹LŠó–]‚̃Cƒ[ƒW@¨@"~ŽR~˜Y"‚ª–¾×ƒV[ƒg‚ɂ͂ ‚邪AŠ‘®•”ˆê——ƒV[ƒg‚ɂ͂Ȃ¢ˆ×AŠY“–ŽÒ‚È‚µ‚Æ‚µ‚Ä“]‹L‚µ‚½‚¢
A—ñ@@@@@@B—ñ@@@c@@@X—ñ
ƒVƒXƒeƒ€ˆê•”@“c’†‘¾˜Y@@@@@~ŽR~˜Y
@@@@@@ @²“¡ŽŸ˜Y
i‚Ü‚«j 2022/09/14(…) 14:27
Sub test3() Dim ws’Šo As Worksheet Dim wsˆê—— As Worksheet Dim ws–¾× As Worksheet Dim wsTemp As Worksheet Dim adr1 As String, adr2 As String Dim c As Range Dim r As Long
Set ws’Šo = Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm").Worksheets(1) Set wsˆê—— = Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm").Worksheets("Š‘®•”ˆê——") Set ws–¾× = Workbooks("ŽÐ“àH”“Š“üó‹µ_‘S‘Ì .xlsx").Worksheets("–¾×")
wsˆê——.Copy ws’Šo Set wsTemp = ActiveSheet wsTemp.UsedRange.Offset(1).ClearContents
adr1 = wsˆê——.Cells(1).CurrentRegion.Columns(1).Address(0, 0, , -1) adr2 = ws–¾×.Cells(1).CurrentRegion.Columns(6).Address(, , , -1) wsTemp.Cells(1).CurrentRegion.Rows(2).Formula2 _ = "=filter(" & adr1 & ",countif(" & adr2 & "," & adr1 & "),"""")"
ws’Šo.UsedRange.ClearContents
r = 1 For Each c In wsTemp.Cells(1).CurrentRegion.Rows(2).Cells If c.Value <> "" Then ws’Šo.Cells(r, 1).Value = c.Offset(-1).Value adr1 = c.Address(, , , -1) ws’Šo.Cells(r, 2).Formula2 = "=WRAPCOLS(" & adr1 & "#,4,"""")" r = ws’Šo.Cells(Rows.Count, 2).End(xlUp).Offset(1).Row End If Next
adr1 = ws–¾×.Cells(1).CurrentRegion.Columns(6).Address(, , , -1) adr2 = wsˆê——.Cells(1).CurrentRegion.Offset(1).Address(, , , -1) ws’Šo.Cells(1, "X").Formula2 _ = "=filter(" & adr1 & ",countif(" & adr2 & "," & adr1 & ")=0,"""")" ws’Šo.UsedRange.Value = ws’Šo.UsedRange.Value ws’Šo.Cells(1, "X").Value = "–¢“o˜^ŽÒ"
Application.DisplayAlerts = False wsTemp.Delete Application.DisplayAlerts = True
End Sub
iƒ}ƒij 2022/09/14(…) 19:29
Sub test1() Const GROUP_ROW As Long = 4 'o—͗̈æ‚Ì’PˆÊs”
Dim mySheet As Worksheet 'ì‹Æ—p•Ï”iì‹ÆƒV[ƒg‚ðŽw’èj Dim dicBU As Object 'ì‹Æ—p•Ï”i•”—pDictionaryj Dim dicNM As Object 'ì‹Æ—p•Ï”i•”“à‚̃ƒ“ƒo[—pDictionaryj Dim dicNM2 As Object 'ì‹Æ—p•Ï”i”ñŠY“–ŽÒƒƒ“ƒo[—pDictionaryj Dim keyBU As Variant 'ì‹Æ—p•Ï”i•”j Dim keyNM As Variant 'ì‹Æ—p•Ï”iƒƒ“ƒo[j Dim maxCnt As Long '•”‚²‚Æ‚Ìő僃“ƒo[”‚ð”cˆ¬‚µ“]‹Læ‚ð’²®‚·‚邽‚߂̕ϔ Dim myR As Long '“]‹Læ‚Ìs Dim myC As Long '“]‹Læ‚ÌAŠY“–ŽÒE”ñŠY“–ŽÒ‚ð•\ަ‚·‚é—ñ”
'1.ì‹ÆƒV[ƒg‚P‚©‚ç•”‚ƃƒ“ƒo[‚̈ꗗDictionary‚ð쬂·‚é
Set dicBU = CreateObject("Scripting.Dictionary") '•”—pDictionary‚ð錾 Set mySheet = Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm").Worksheets("Š‘®•”ˆê——") 'ì‹Æƒ[ƒNƒV[ƒg‚P‚ðÝ’è With mySheet For myC = 1 To .Cells(1, .Columns.Count).End(xlToLeft).Column 'ƒV[ƒg“à1s–ÚŠe—ñ‚ð„‰ñ Set dicNM = CreateObject("Scripting.Dictionary") 'ƒƒ“ƒo[ãDictionary‚ð‰Šú‰» For myR = 2 To .Cells(.Rows.Count, myC).End(xlUp).Row '—ñ‚²‚ƂɊes‚ð„‰ñ dicNM(.Cells(myR, myC).Value) = Empty 'ƒƒ“ƒo[—pDictionary‚ÌKey‚Ƀƒ“ƒo[–¼‚ð“ü‚ê‚éid•¡”ð‚¯j Next myR Set dicBU(.Cells(1, myC).Value) = dicNM '•”—pDictionary‚ÌItem‚Ƀƒ“ƒo[Dictionary‚ð“ü‚ê‚é If dicNM.Count > maxCnt Then 'ő僃“ƒo[”‚ª‚»‚ê‚܂łÌÅ‘å’l‚æ‚è‘å‚«‚¢ê‡‚Í maxCnt = dicNM.Count 'ő僃“ƒo[”‚ðXV‚·‚é End If Next myC End With
'2.ì‹ÆƒV[ƒg‚Q‚ÌƒŠƒXƒg‚ɂȂ¢ŽÒ‚𕔂ƃƒ“ƒo[‚̈ꗗDictionary‚©‚çÁ‚µA ' ƒŠƒXƒg‚É‚ ‚邪•”‚ƃƒ“ƒo[‚̈ꗗDictionary‚É‚¢‚È‚¢ŽÒ‚ð”ñŠY“–ŽÒDictionary‚É“ü‚ê‚é
Set dicBU2 = CreateObject("Scripting.Dictionary") '”ñŠY“–ŽÒ—p‚Ì•”—pDictionary‚ð錾 Set mySheet = Workbooks("ŽÐ“àH”“Š“üó‹µ_‘S‘Ì .xlsx").Worksheets("–¾×") 'ì‹Æƒ[ƒNƒV[ƒg‚Q‚ðÝ’è Set dicNM2 = CreateObject("Scripting.Dictionary") '”ñŠY“–ŽÒ—pDictionary‚ð‰Šú‰» For myR = 2 To .Cells(.Rows.Count, 6).End(xlUp).Row 'F—ñŠes‚ð„‰ñ dicNM2(.Cells(myR, 6).Value) = Empty '”ñŠY“–ŽÒ—pDictionary‚ÌKey‚Ƀƒ“ƒo[–¼‚ð“ü‚ê‚éid•¡”ð‚¯j Next myR For Each keyBU In dicBU.keys '•”—pDictionary‚ð„‰ñ Set dicNM = dicBU(keyBU) 'ì‹Æ—p•Ï”‚ÉItem‚̃ƒ“ƒo[Dictionary‚ð“ü‚ê‚é For Each keyNM In dicNM.keys '•”“àƒƒ“ƒo[Dictionary‚ð„‰ñ Debug.Print keyNM If WorksheetFunction.CountIf(.Columns(6), keyNM) = 0 Then 'ì‹Æƒ[ƒNƒV[ƒg‚Q‚ÌF—ñ‚Ƀƒ“ƒo[–¼‚ª‚È‚¯‚ê‚Î dicNM.Remove keyNM 'ƒƒ“ƒo[Dictionary‚©‚ç–•Á ElseIf dicNM2.Exists(keyNM) Then 'iF—ñ‚Ƀƒ“ƒo[–¼‚ª‚ ‚Á‚Äj”ñŠY“–ŽÒ—pDictionary‚É‚àƒƒ“ƒo[–¼‚ª‚ ‚éê‡i•Ê•”“¯©“¯–¼‘Îôj dicNM2.Remove keyNM '”ñŠY“–ŽÒ—pDictionary‚©‚ç–•Á End If Next keyNM If dicNM.Count = 0 Then 'ƒƒ“ƒo[Dictionary‚̃f[ƒ^”‚ª0‚Ìê‡ dicBU.Remove keyBU '•”—pDictionary‚©‚ç•”‚²‚Æ–•Á Else 'ƒf[ƒ^‚ª1ˆÈã‚ ‚éê‡‚Í Set dicBU(keyBU) = dicNM '•”—pDictionary‚Ƀƒ“ƒo[Dictionary‚ðĂѓü‚ê‚é End If Next keyBU End With
'3.ì‹ÆƒV[ƒg‚R‚ÉŠY“–ŽÒA”ñŠY“–ŽÒ‚̃f[ƒ^‚ð“\‚è•t‚¯‚é
With Workbooks("·•ªƒ`ƒFƒbƒNƒ}ƒNƒ_ver2.6.xlsm") '«u.v‚ª”²‚¯‚Ä‚¢‚é‚̂ũ‚̃uƒbƒN‚ł͂ȂActivesheet‚È‚±‚ƂɒˆÓ Set mySheet = Sheets(1) 'ì‹Æƒ[ƒNƒV[ƒg‚R‚ðÝ’è End With myC = Int(maxCnt / GROUP_ROW) + 1 'ŠY“–ŽÒE”ñŠY“–ŽÒ‚ð•\ަ‚·‚é—ñ” With mySheet myR = 1 'sƒJƒEƒ“ƒ^‚ð1‚ÉÝ’è For Each keyBU In dicBU.keys '•”—pDictionary‚ÌKeyi•”ƒŠƒXƒgj‚ð„‰ñ .Cells(myR, 1).Value = keyBU 'A—ñ‚É•”–¼‚ð“ü—Í .Cells(myR, 2).Resize(GROUP_ROW, myC).Value = _ SampleFunction(dicBU(keyBU), GROUP_ROW, myC) 'ŠY“–ƒƒ“ƒo[ƒŠƒXƒg‚ð“ü—Í myR = myR + GROUP_ROW 'sƒJƒEƒ“ƒ^‚ðGROUP_ROW•ªã‚°‚é Next keyBU myR = myR - 1 .Cells(1, 3).Offset(, myC).Resize(myR, myC).Value = _ SampleFunction(dicNM2, myR, myC) 'ŠY“–ƒƒ“ƒo[ƒŠƒXƒg‚̉E‘¤‚É”ñŠY“–ƒƒ“ƒo[ƒŠƒXƒg‚ð“ü—Í End With End Sub
Private Function SampleFunction(objDic As Object, rCnt As Long, cCnt As Long) As Variant() 'objDic‚ÌKeysƒŠƒXƒg‚ðrCnts~cCnt—ñ‚Ì”z—ñ‚ɕϊ·‚·‚é Dim tmp() As Variant Dim var As Variant Dim iR As Long Dim iC As Long Dim i As Long
ReDim tmp(1 To rCnt, 1 To cCnt) '‰¼”z—ñ‚ðs~—ñ”‚ÅÄ’è‹` If objDic.Count > 0 Then 'ˆø”‚ÌDictionary‚ª‹ó‚łȂ¯‚ê‚Î var = objDic.keys 'Keys‚ð”z—ñ‚É“ü‚ê‚Ä For i = 0 To UBound(var) '—v‘f”•ª„‰ñ iC = 1 + (i \ rCnt) '—ñ‚Ì’l‚Ís”‚ÅŠ„‚Á‚½¤ If iC > cCnt Then Exit For '—ñ”‚ª”z—ñ‚ÌãŒÀ‚ð’´‚¦‚½‚çI—¹ iR = 1 + (i Mod rCnt) 's‚Ì’l‚Ís”‚Ìè—] tmp(iR, iC) = var(i) '‰¼”z—ñ‚ÉKey‚ð“ü‚ê‚é Next End If SampleFunction = tmp End Function
uŠY“–‚È‚µv‚Í•”‚̈ê‚‚Ƃ·‚é‚Ì‚àˆêˆÄ‚Å‚·‚ªEEE
i‰ºŽè‚̉¡D‚«j 2022/09/14(…) 19:56
myR = myR - 1 .Cells(1, 3).Offset(, myC).Resize(myR, myC).Value = SampleFunction(dicNM2, myR, myC)
‚±‚±‚ð
myC = Int(dicNM2.Count / GROUP_ROW) + 1 .Cells(myR, 1).Value = "ŠY“–‚È‚µ" .Cells(myR, 2).Resize(GROUP_ROW, myC).Value = SampleFunction(dicNM2, GROUP_ROW, myC)
‚±‚¤‚µ‚Ä‚‚¾‚³‚¢B
i‰ºŽè‚̉¡D‚«j 2022/09/15(–Ø) 21:43
[ ˆê——(ÅVXV‡) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.