2017-01-19 1 views
0

VBA에 대한 경험이 거의 없습니다. 나는 도처에서 수색했으며 누군가가 도울 수 있기를 바랍니다. 나는 ixchariot 스크립트로 만든 .csv 파일이 있습니다. 나는 첫 번째로 열 P의 데이터를 .csv의 각 출력에 대한 동적 범위 인 그룹으로 분리하려고합니다 (예 : 첫 번째 실행 지정 및 colump P의 그룹은 P1-P68, 두 번째는 P1-P100) 그런 다음 각 그룹을 별도의 탭 (예 : 그룹 1 열 A, 그룹 2 열 B)에서 고유 한 열로 이동하십시오. 공백으로 분리 된 데이터의 동적 범위를 별도의 탭에서 새 열로 옮깁니다.

Sub InsertRowsAtValueChange() 
'Update 20140716 
Dim Rng As Range 
Dim WorkRng As Range 
On Error Resume Next 
xTitleId = "KutoolsforExcel" 
Set WorkRng = Application.Selection 
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address,  Type:=8) 
Application.ScreenUpdating = False 
For i = WorkRng.Rows.Count To 2 Step -1 
If WorkRng.Cells(i, 1).Value <> WorkRng.Cells(i - 1, 1).Value Then 
    WorkRng.Cells(i, 1).EntireRow.Insert 
End If 
Next 
Application.ScreenUpdating = True 
End Sub 

이렇게 I가 그룹의 분리가 있지만 방법 열 (P)로부터 기의 동적 범위를 이동 ... I 스크립트이 모양) X를 통해 그룹 번호 1을 갖는 열 B를 사용하여 그룹으로 분리하는 방법 새 탭으로 이동 한 다음 별도의 열로 이동 하시겠습니까? 어떤 도움

separating into groups

desired output in separate tab

감사합니다!

+0

셀을 잘라내거나 복사하고 보이는 셀을 붙여 넣을 수 있습니다. 데이터 필터링에 따라 각 고유 그룹에 대한 필터링 프로세스를 반복하고 각각의 새로운 마지막 행을 찾은 다음 P2 : P & lastrow에서 복사 할 수 있습니다. 루프의 마지막 줄을 다듬거나 정의 된 범위를 가지며 보이는 셀에서만 작동합니다. – Cyril

+0

방향에 대한 시칠리아 감사합니다. 구현을 위해 약간의 독서를해야 할 것입니다.하지만 제 코드를 게시 할 것입니다. – boz01

+0

다른 시트를 활용할 수 있다면 열 P를 복사하고 모든 중복을 제거한 다음 반복 할 정확한 목록을 제공하는 데 도움이 될 수 있습니다. 내가 도와 줄 코드를 추가하려고 할 수 있습니다. 자신에게 맞는 정보가 아닌 경우에 대비하여 일찍 의견을 제시했습니다. – Cyril

답변

0

첫째, 당신이 다시 가고 싶은거야, 그럼 이제 각각의 중복 항목

Dim LR as Long 
LR = Cells(Sheets("AnotherSheet").Rows.Count, 1).End(xlUp).Row 
Dim i as Integer 

For i = 1 to LR 
    If Cells(i,1)=Cells(i+1,1) Then 
     Sheets("AnotherSheet").Rows(i+1).Delete 
     Else: 
     End If 
Next i 

에 대한 행을 내가 종류이 약의 엉터리 해요 열 P

Sheets("PrimarySheet").Range("P:P").Copy 
Sheets("AnotherSheet").Range("A:A").PasteSpecial xlPasteValues 

을 이동하지만, 삭제하자 당신의 주 시트와 열을 기반으로 전체 범위를 정렬, 다른 시트 (이 부분은 내가 더 많은 것들을 찾고 시작할 필요가 부분입니다 그래서 완전한 코드가되지 않습니다 ... 편집 할 것입니다)

Dim j as Integer 
Dim LR1 as Long 
LR1 = Cells(Sheets("PrimarySheet").Rows.Count, 1).End(xlUp).Row 
Dim LR1 as Long 
For j = 1 to LR1 

With Sheets("PrimarySheet") 
    .AutoFilterMode = False 
    .Columns(16).AutoFilter Field:=1, Criteria1:= Sheets("AnotherSheet").Cells(j,1).Value 
End With 

Redim LR1 as Long 
Sheets("PrimarySheet").Range(Cells(1,1),Cells(LR1)).Copy 
ActiveWorkbook.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = Sheets("AnotherSheet").Cells(j,1).Value 
Sheets(Cells(j,1).Value).Range("A1").PasteSpecial xlPasteValues 

Next j 

작업을 마무리하기에 충분하지 않다면 이것은 아주 좋은 시작입니다.

+0

시릴 씨 감사합니다. 지금 구현하려고하는 Im. 주말 내내 이걸 파헤쳐 볼 시간이 더있을거야. 시간 기반 성능 데이터로 중복을 구문 분석 할 필요는 없지만 그 스 니펫에 감사드립니다! – boz01

관련 문제