I 아래 정의 "요약"탭에 하나의 컬럼 탭의 범위에서 모든 고유 값을 복사하려면 다음 코드가 있습니다동적 범위
Sub GetUniqueItems()
Dim vData As Variant, n&, lLastRow&, sMsg$
Dim oColl As Collection
lLastRow = Worksheets(Worksheets("Summary").Range("A1").Value)._
Cells(Rows.Count, "H").End(xlUp).Row
If lLastRow = 1 Then Exit Sub
vData = Worksheets(Worksheets("Summary").Range("A1").Value)._
Range("H2:H" & lLastRow)
Set oColl = New Collection
For n = LBound(vData) To UBound(vData)
On Error Resume Next
oColl.Add vData(n, 1), CStr(vData(n, 1))
On Error GoTo 0
Next n
For n = 1 To oColl.Count
sMsg = oColl(n)
Sheets("Summary").Cells(n + 3, 1).Value = Mid$(sMsg, 1)
Next n
End Sub
이 작품을 정의 된 범위에 적합합니다. 내가 뭘 원하는 정의 된 탭에서 동적 범위에서 복사입니다. 이 범위는 행 1에 항목이있는 마지막 열과 열 A와 마지막 열 사이에 마지막으로 채워진 행으로 정의됩니다. lastcol 변수 또는 여러 열을 포함하는 범위를 도입하자마자 코드에서 오류가 발생합니다.
내가 지금까지 구축 한대로 코드는 다음과 같습니다
Sub GetUniqueItems()
Dim vData As Variant, n&, lLastRow&, sMsg$
Dim oColl As Collection
Dim lastrow As Long
Dim lLastCol As Long
'Find last column in Row 1 of each data tab
lLastCol = Worksheets(Worksheets("Summary").Range("A1").value)._
Cells(1, Columns.Count).End(xlToLeft).Column
If lLastCol < 1 Then Exit Sub
' Find the last row of the last column
lLastRow = Worksheets(Worksheets("Summary").Range("A1").value)._
Cells(Rows.Count, lLastCol).End(xlUp).Row
If lLastRow = 1 Then Exit Sub
vData = Worksheets(Worksheets("Summary").Range("A1").value).Range(llastcol)
Set oColl = New Collection
For n = LBound(vData) To UBound(vData)
If Not (IsDate(vData(n, 1)) Or IsEmpty(vData(n, 1))) Then oColl._
Add (vData(n, 1)), CStr(vData(n, 1))
On Error GoTo 0
Next n
For n = 1 To oColl.Count
sMsg = oColl(n)
Sheets("Summary").Cells(n + 3, 1).value = Mid$(sMsg, 1)
Sheets("Summary").Cells(n + 3, 1).Offset(0, 1).value = _
Application.CountIf(Worksheets(Range(Split(Sheets("Summary")._
Cells(n + 3, 1).Address, "$")(1) & "1").value).Cells, Mid$(sMsg, 1))
Next n
End Sub
어떤 제안?
W0lf, 대단히 감사합니다. 나는 나머지 부분을 고쳤지만, 여전히 범위를 단일 열로 만 받아들입니다. 하나 이상의 열을 추가하려고하면 오류 1004가 발생합니다 .Columns (1, lLastCol) 및 .Columns (Cells (1, 1), Cells (1, lLastCol))를 시도했습니다. –
또는 더 이상한, 정적 범위가 명시 적으로 정의 된 경우 첫 번째 열의 데이터 만 내 보냅니다 (예 : 코드에서 "A"의 값을 내보낼 때 .Columns ("A : H")) –
@MarioKonfortov는 시도하는 것에 대한 간단한 예를 게시 할 수 있습니까? 질문에 달성하기 위해? 두 장의 스크린 샷 : 입력 시트 및 출력 (정확하게 채워짐) – GolfWolf