Я хочу скопировать данные из отчета на новый лист с ячейками, расположенными так, как я хочу (к сожалению, исходный отчет не может быть отформатирован!).

У меня есть форматирование, но оно создает строки, где данные имеют 0.

Я хочу, чтобы код VBA копировал ячейки из столбцов A:F на другой лист. Я видел примеры того, как делать отдельные столбцы, но я слишком новичок, чтобы воссоздать код для других столбцов (и я хочу, чтобы он выглядел красиво и аккуратно!)

Sub copynoblanksA()
'
'

'
Dim sh1 As Worksheet, s2 As Worksheet, i As Long
Dim j As Long, N As Long, r1 As Range

    Set sh1 = Sheets("List1")
    Set sh2 = Sheets("Sheet4")

N = sh1.Cells(Rows.Count, "A").End(xlUp).Row
    j = 1

For i = 1 To N
        Set r1 = sh1.Cells(i, "A")
        If r1.Value <> "" Then
            r1.Copy sh2.Cells(j, "A")
            j = j + 1
        End If
    Next i


End Sub

2 ответа2

0

Для большинства из этих простых вопросов это лучшая практика:

  • Перейдите на вкладку «Разработчик», затем нажмите «запись макроса» (дайте имя макросу)
  • Выберите столбец, который хотите скопировать, скопируйте на вкладку, которую хотите скопировать
  • Перейдите на вкладку «Разработчик» и нажмите «Остановить запись».
  • Зайдите в редактор, посмотрите на скрипт, вставьте его в свой код и, в конце концов, адаптируйте его под свои переменные.

Чтобы вставить ячейки, но не пустые, вы можете использовать код:

Range("A1:A20").SpecialCells(xlCellTypeConstants).Copy Destination:=Sheets("newsheet").Range("A1")
0

Теперь решение не VBA:

= ЕСЛИОШИБКА (ИНДЕКС ($ A $ 1:$ A $ 8, МАЛЫЙ (ЕСЛИ ($ B $ 1:$ B $ 8 = "0", СТРОКА ($ B $ 1:$ B $ 8), 999999), СТРОКА (А1))), "")

Первый индекс (A1:A8), если диапазон данных, которые вы хотите переместить. B1:B8 в If - это ваш критерий. (Иначе столбец, которым вы хотите быть 0). Команда ROW должна быть 1:N, где N - это общее количество строк. Последняя строка должна быть там, где находятся ваши данные, и должна меняться по мере их перетаскивания. Это формула массива, поэтому вам нужно нажать Ctrl + Shift + Enter

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .