2016-04-13 9 views
0

У меня есть отчет SAP в Excel с более чем 10 000 строк. Есть 2 столбца - A & B. A - значение в $ и B - ref для значения. Отчет SAP показывает промежуточные итоги по типу ссылок, но промежуточная ячейка ref B всегда пуста. Мне нужно скопировать ячейку над пустой ячейкой в ​​пустую ячейку (в ту же строку, что и промежуточный итог). например A1: A5 имеет значения 3,2,3,1,1, поэтому итоговое значение составляет 10, и оно находится в A6. ячейка в B6 пуста. Тип ref в B5 составляет 12 кг. Мне нужно скопировать эту ссылку в ячейку B6. причина, почему я делаю это, заключается в том, что я фильтрую отчет по промежуточному итогу для копирования в другой файл. На данный момент я делаю это вручную, и это занимает много времени. Я предполагаю, что это код цикла до последней строки, поскольку строки меняются каждый раз, когда я запускаю отчет. Спасибо!Петля, чтобы найти пустую ячейку в столбце, затем скопируйте ячейку над пустой ячейкой в ​​пустую ячейку

+0

вы знакомы с Visual Basic? – moffeltje

ответ

0

Это вы что искали? Этот элемент пересекает все строки и проверяет, является ли ячейка в столбце B пустой, но ячейка в столбце A содержит значение. Если это так, он копирует ячейку в столбце B из предыдущей строки в текущую строку.

Sub fillEmptyCells() 
'copies the above cell for each empty cell in B where the cell in A is not empty 
    Dim i As Integer 
    Dim lastRow As Integer 
    Dim ws As Worksheet 
    Set ws = ActiveSheet 

    lastRow = ws.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row 'This gives the last Row with a nonempty cell in column A 
    For i = 1 To lastRow 
     If IsEmpty(ws.Cells(i, 2)) And Not IsEmpty(ws.Cells(i, 1)) Then 
      ws.Cells(i - 1, 2).Copy ws.Cells(i, 2) 
     End If 
    Next i 
End Sub 

Edit: здесь же к югу с with среды

Sub fillEmptycells() 
'copies the above cell for each empty cell in B where the cell in A is not empty 
    Dim i As Integer 
    Dim lastRow As Integer 

    With ActiveSheet 
     lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 'This gives the last Row with a nonempty cell in column B 
     For i = 1 To lastRow 
      If IsEmpty(.Cells(i, 2)) And Not IsEmpty(.Cells(i, 1)) Then 
       .Cells(i - 1, 2).Copy .Cells(i, 2) 
      End If 
     Next i 
    End With 
End Sub 
+0

WOW !!!! удивительный код - работает 100%. работа гения. Вы только что сэкономили мне 30 минут дополнительной работы каждый день. Спасибо вам большое! – Zakky

Смежные вопросы