Всем привет, нужна помощь в доработке Книги ексель. Нужен макрос, который будет переносить всю строку по нажатии кнопки в другой лист на тоже самое место, если в строке имеется дата. Если в 1,3,6 строке есть данные (дата в данном случае), а в 2,4,5 строках пусто, то пустые должны остаться а заполненные перейти во второй лист. Помогите пожалуйста советом как это лучше сделать.
С\у, Вячеслав.
Всем привет, нужна помощь в доработке Книги ексель. Нужен макрос, который будет переносить всю строку по нажатии кнопки в другой лист на тоже самое место, если в строке имеется дата. Если в 1,3,6 строке есть данные (дата в данном случае), а в 2,4,5 строках пусто, то пустые должны остаться а заполненные перейти во второй лист. Помогите пожалуйста советом как это лучше сделать.
Если только макросом - есть отдельная ветка для VBA Формулой - в файле (кстати, для примера можно было и такой выложить, без сотен заполненных строк)
Если только макросом - есть отдельная ветка для VBA Формулой - в файле (кстати, для примера можно было и такой выложить, без сотен заполненных строк)vikttur
утилита смотрит, пустая ячейка в столбце B или нет. если не пустая,то копируются данные с листа на другой лист [vba]
Код
Sub Macro1() Dim sh1 As Worksheet, sh2 As Worksheet, arr() Dim lngLastRow As Long Dim i As Long, r As Long Application.ScreenUpdating = False Set sh1 = Worksheets("СВХ") Set sh2 = Worksheets("отчет") lngLastRow = sh1.UsedRange.Row + sh1.UsedRange.Rows.Count - 1 arr() = sh1.Range("B1:B" & lngLastRow).Value r = 3 For i = 4 To UBound(arr) If CStr(arr(i, 1)) <> "" Then r = r + 1 sh2.Cells(r, "A").Resize(1, 28).Value = sh1.Cells(i, "A").Resize(1, 28).Value End If Next Application.ScreenUpdating = True End Sub
[/vba]
утилита смотрит, пустая ячейка в столбце B или нет. если не пустая,то копируются данные с листа на другой лист [vba]
Код
Sub Macro1() Dim sh1 As Worksheet, sh2 As Worksheet, arr() Dim lngLastRow As Long Dim i As Long, r As Long Application.ScreenUpdating = False Set sh1 = Worksheets("СВХ") Set sh2 = Worksheets("отчет") lngLastRow = sh1.UsedRange.Row + sh1.UsedRange.Rows.Count - 1 arr() = sh1.Range("B1:B" & lngLastRow).Value r = 3 For i = 4 To UBound(arr) If CStr(arr(i, 1)) <> "" Then r = r + 1 sh2.Cells(r, "A").Resize(1, 28).Value = sh1.Cells(i, "A").Resize(1, 28).Value End If Next Application.ScreenUpdating = True End Sub
Добрый день, подскажите как на примере кода от Karataev, получить данные на листе "отчет" в конце данных? При применении кода данные вставляются вверху и заменяют существующие записи...
Добрый день, подскажите как на примере кода от Karataev, получить данные на листе "отчет" в конце данных? При применении кода данные вставляются вверху и заменяют существующие записи...cartter