2016-07-08 1 views
0

다음 행이 없을 때까지 행 데이터를 다음 행으로 복사하는 코드를 작성하고 있습니다. 빈. 행 1의 모든 것이 헤더라고 가정합니다.EXCEL VBA - 비어 있지 않은 경우 행의 셀을 순환하여 다음 행이 비어 있지 않을 때까지 셀 값을 다른 행에 복사하십시오.

데이터 같다 : 다음 행이 비어 있지 때까지

A2 ClientA  B2 Product1  C2 Price  D2 Quantity  E2 Cost 
    A3    B3    C3 Price  D3 Quantity  E3 Cost 
    A4    B4    C4 Price  D4 Quantity  E4 Cost 
    A5 ClientB  B5 Product2  C5 Price  D5 Quantity  E5 Cost 
    A6    B6    C6 Price  D6 Quantity  E6 Cost 
    A7 ClientC  B7 Product3  C7 Price  D7 Quantity  E7 Cost 
    A8    B8    C8 Price  D8 Quantity  E8 Cost 
    A9    B9    C9 Price  D9 Quantity  E9 Cost 

는 A3와 A4가 제품으로 채울 ClientA 및 B3 및 B4로 채울 것입니다.

비슷한 질문을 찾기 위해 검색했지만 어떻게 작성해야하는지 잘 모릅니다.

A2 ClientA  B2 Product1  C2 Price  D2 Quantity  E2 Cost 
    A3 ClientA  B3 Product1  C3 Price  D3 Quantity  E3 Cost 
    A4 ClientA  B4 Product1  C4 Price  D4 Quantity  E4 Cost 
    A5 ClientB  B5 Product2  C5 Price  D5 Quantity  E5 Cost 
    A6 ClientB  B6 Product2  C6 Price  D6 Quantity  E6 Cost 
    A7 ClientC  B7 Product3  C7 Price  D7 Quantity  E7 Cost 
    A8 ClientC  B8 Product3  C8 Price  D8 Quantity  E8 Cost 
    A9 ClientC  B9 Product3  C9 Price  D9 Quantity  E9 Cost 

누구든지 VBA 코드가 될 것입니다 어떤 생각을 가지고 같은

EXCEL VBA - Loop through cells in a column, if not empty, print cell value into another column

최종 결과는 것입니까?

답변

1

VBA가 필요하지 않습니다.

쓰기 헬퍼 열이 화학식 : =IF(ISBLANK(A2),F1,A2)

헬퍼 열 가정이 칼럼 F. 드래그 다운 셋에, 다음 원본 열에 값을 복사한다. 열 B에 대해 반복하십시오.

+0

내가이 C 열 중 일부가 비어있는 경우에도 작동 발견, 들으 메이트 –

1

VBA를 사용하려면이 옵션을 사용할 수 있습니다.

데이터가있는 마지막 행을 어떻게 찾을 지 확실하지 않아서 변경할 수있는 변수를 제공 했으므로 행에 해당합니다. Z를 사용하는 첫 번째 For 루프는 A (1)과 B (2) 열을 반복하며,이 루프 내에서 다른 For 루프가 셀을 통과하고 셀 값이 ""인 경우 마지막으로 표시된 값을 입력합니다.

Sub LoopFill() 

Dim LastEntry As String, LastRow As Integer 

LastRow = 25 

For Z = 1 To 2 
    LastEntry = "" 
    For i = 1 To LastRow 
     If Cells(i, Z).Value = "" Then Cells(i, Z).Value = LastEntry 
     LastEntry = Cells(i, Z).Value 
    Next i 
Next Z 

End Sub 
+0

방법에 대한 난 경우 E 열의 마지막 행을 찾으시겠습니까? 다음과 같이 추가하십시오. LastRow = activesheet.Cells (.Rows.Count, "E"). (xlUp) .Row –

+0

예, 작동합니다. – tjb1

+0

답변 중 하나가 도움이되었거나 귀하의 질문에 답변을 찾으면 답변으로 표시하십시오. –

1

당신은해야합니다 :

  • 시트 이름 : 당신이

  • arColumns을 처리하려는 시트 = 배열의 이름에 ("A", 2, 3) : 이 배열


에 당신이 가득 할 열 번호 또는 문자를 추가
 
Sub FillRows() 
    Const SheetName As String = "Sheet3" 

    Dim lastRow As Long, x As Long, y 
    Dim arColumns 
    arColumns = Array("A", 2, 3) 

    With Worksheets(SheetName) 
     lastRow = .Rows(Rows.Count).End(xlUp).Row 
     For x = 3 To lastRow 
      For y = 0 To UBound(arColumns) 
       If IsEmpty(.Cells(x, arColumns(y)).value) Then .Cells(x, arColumns(y)).value = .Cells(x - 1, arColumns(y)).value 

      Next 
     Next 

    End With 

End Sub 

+0

UBound (arColumns)는 배열의 상한선을 찾는 것이지만 배열 선언은 동적이 아닙니다. arColumns = Array ("A", 2, 3) 코드는 어떻게 작동합니까? –

+0

'UBound (arColumns)'와'UBound (arColumns, 1)'는 배열의 첫 번째 차원의 마지막 인덱스를 반환합니다. –

0

여기에는 VBA가없는 다른 방법이 있습니다.

  1. 선택 공백 (CTRL + G, 특별, 선택 공백, OK를 클릭) 수식 입력 줄을 입력 = (직접 첫 번째 빈 위 CELL)에서
  2. 예 : A2가 비어 있으면 = A1
  3. Ctrl 키를 누른 상태에서 Enter 키를 눌러 모든 빈 셀에 수식을 적용하십시오.
  4. 범위를 선택하고 수식을 제거하는 데 필요한 경우 값을 복사하여 붙여 넣습니다.당신이 값을 붙여 정렬 또는 필터를 수행하려고하지 않는 경우
  5. , 데이터가 잘못된 것
관련 문제