Какой код VBA следует использовать для копирования данных из столбца A В F на листе Excel в другой лист минус пустые ячейки?

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

У меня есть форматирование, однако он создает строки, в которых данные имеют 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
1
задан DavidPostill
21.02.2023 7:42 Количество просмотров материала 3673
Распечатать страницу

2 ответа

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

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

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

Range("A1:A20").SpecialCells(xlCellTypeConstants).Copy Destination:=Sheets("newsheet").Range("A1")
0
отвечен Jonathan 2023-02-22 15:30

теперь, не-VBA решение:

=функция iferror(индекс($А$1:$в$8,маленькая(если($в$1:$в$8="0",строка($в$1:$в$8),999999),строка(А1))),"")

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

0
отвечен Selkie 2023-02-22 17:47

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх