VBA를 사용하여 Col B Excel 2013에서 식별자를 가져 오는 동안 Col C에서 값을 합산하는 동안 중복 셀 Col A를 병합하는 방법


1

이것이 내가 원하는거야.

이것이 내가 원하는거야

열 A에서 중복 병합
열 B에서 식별자를 통해 끌어 오기 열 B
에서 열 값 합계

Sub SkuSorter()

Dim x As Long, y As Long
Dim rng As Range
Dim wSrc As Worksheet: Set wSrc = Sheets("AR Received SKU's List 1")

With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With

With wSrc
    x = .Range("A" & .Rows.Count).End(xlUp).Row
    Set rng = .Range("A1:A" & x)
    y = .Cells(1, .Columns.Count).End(xlToLeft).Column + 2
    rng.AdvancedFilter Action:=xlFilterCopy, copytoRange:=.Cells(1, y), unique:=True
    Z = .Cells(.Rows.Count, y).End(xlUp).Row
    y = y + 1
    .Cells(1, y).Value = "Total"
    .Range(.Cells(2, y), .Cells(Z, y)).Formula = _
        "=SUMIF(" & rng.Address & "," & .Cells(2, y - 1).Address(False, False) & "," & rng.Offset(, 1).Address & ")"
End With

With Application
    .ScreenUpdating = True
    .Calculation = xlCalculationAutomatic
End With

End Sub

1
슈퍼 유저에 오신 것을 환영합니다. 더 나은 지원을 위해서는 더 많은 정보가 필요합니다. 요청 방법을 읽은 다음 수행 한 조사 내용과이 문제를 스스로 해결하려는 내용에 대한 세부 정보를 포함하도록 게시물을 편집하십시오. 우리는 거기에서 당신을 도울 수 있습니다. teylyn이 말했듯이, 이것은 무료 코딩 서비스가 아닙니다.
CharlieRB

vba 코드를 실행했지만 열 a의 중복 항목과 열 c의 합계 값만 병합하면 열 b의 식별자를 가져 오는 방법에 어려움을 겪고 있습니다.
user517378

Sub SkuSorter () Dim x Long, y Long Dim rng As Range Dim wSrc 워크 시트 : Set wSrc = Sheets ( "AR Received SKU 's") With Application .ScreenUpdating = False .Calculation = xlCalculationManual with with
user517378

wSrc x = .Range ( "A"& .Rows.Count) .End (xlUp) .Row Set rng = .Range ( "A1 : A"& x) y = .Cells (1, .Columns.Count). End (xlToLeft) .Column + 2 rng.AdvancedFilter Action : = xlFilterCopy, copytoRange : =. Cells (1, y), unique : = True Z = .Cells (.Rows.Count, y) .End (xlUp) .Row y = y + 1 .Cells (1, y) .Value = "Total".Range (.Cells (2, y), .Cells (Z, y)). Formula = _ "= SUMIF ("& rng.Address & ","& .Cells (2, y-1) .Address (False, False) & ","& rng.Offset (, 1) .Address & ")"어플리케이션으로 끝남 .ScreenUpdating = Truek .Calculation = xlCalculation 자동 종료
517378

제발 편집 코드를 포함하는 질문을. 읽을 수없는 주석에는 넣지 마십시오.
DavidPostill

답변:


1

잘만되면 당신은 다시 여기를 볼 것입니다.
VBA가 필요없는 곳에서 답을 드리고 모든 비트를 설명하려고 노력할 것입니다.

: 그림을 사용하여 당신은 내가 자신의 시트를 만들어 공유 우리는 시작 하는 최상위 항목입니다. 간단히 할 것입니다. 여기서 설명 할 것이 많지 않습니다.
여기에 이미지 설명을 입력하십시오
F2=A2

G2온다 =IF(LEN(F2),INDEX(B:B,MATCH(F2,A:A,0)),""). 두 번째 열을 아는 것은 항상 첫 번째 열과 동일하므로 F2범위 A:A( MATCH) 에서 정확히 일치하는 항목을 검색 B:B하고 같은 행에있는 내용을 인쇄합니다 . (발견 된 첫 번째 항목에서 멈추지 만 중요하지는 않지만 거의 동일합니다.) LEN검색 #NA문자열이 비어 있는지 표시 하지 않고 전체 배열 계산을 건너 뜁니다.

H2당신이 제안한 것이 온다 =IF(LEN(F2),SUMIF(A:A,F2,C:C),""). C주어진 검색어가 column에 있는 column의 모든 값을 간단히 합 칩니다 A. LENpart의가에서 같은 동일 G2이 오류가 표시되지 않지만, 그것은을 나타납니다 0. 그러나 serch-term이 있고 합계가 인 경우 여전히 0을 얻습니다 0.

필요한만큼만 자동 완성 G2H2축소 할 수 있지만 작동하지 않습니다 F2. 그러나 다음 공식을 사용하여 그렇게 할 수 있습니다 F3.

=IF(LEN(F2),IFERROR(INDEX(A:A,MATCH(1,(COUNTIF(F$2:F2,A$2:A$1000)=0)*(A$2:A$1000<>""),0)+1),""),"")

이것은 배열 수식이며 Ctrl+ Shift+ 로 확인해야합니다 Enter.

그것은 시작 COUNTIF단순히 각 항목이 느끼는 동안 진 배열 반환 1이 어떤 검색 문장을 matchs 경우를, 다른 모든이를 얻을 수 0(자체 위의 모든 문자열을 검색 F$2:F2). 우리가 allready 사용 항목을받지 않으 기분이야 우리 모두를 설정 0 TRUE( =0). 우리는 또한 empty아이템을 원하지 않기 때문에 그것을 확인합니다 ( A$2:A$1000<>""). 부울 배열 2 개를 곱하는 것은 ANDAND항목 쌍마다를 갖는 것과 동일하지만 real을 사용하면 부스 배열의 모든 항목이로 확인됩니다 TRUE. 그러나 다시 곱하면 1비어 있지 않고 사용되지 않는 각 항목에 이진 배열 이 생깁니다. MATCH이제 첫 번째를 확인1위치 번호 (행)를 반환합니다. 그러나 두 번째 행에서 시작하면로 오프셋 된 오프셋을 제공합니다 +1. 위치가 있으면 INDEX필요한 문자열을 얻을 수 있습니다. 반환 IFERROR하는 첫 번째 empty솔루션 에만 해당됩니다 #NA. 그리고 LEN첫 번째 빈 셀 이후의 모든 셀에 대한 계산을 건너 뜁니다.
수식 마법사를 사용하여 실제로 계산되는 것을 확인하면 이해하는 데 도움이됩니다. 그러나 항상 번 확인 모든를 $하거나 자동 채우기가 실패 할 수 있습니다.

그래도 질문이 필요한 경우 의견을 작성하십시오. :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.