Копировать и вставлять между листами - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь добиться следующего :

  • У меня есть одна главная таблица на рабочем листе
  • И идентичная таблица на другом рабочем листе
  • Если ячейка в таблице основного листа пуста, код должен проверить соответствующую ячейку в другой таблице рабочего листа
  • Если соответствующая ячейка содержит значение, это значение следует скопировать в пустую ячейку таблица основного листа
    • Это следует повторить для всех ячеек в таблице основного листа

До сих пор я нашел только один полезный код, который можно настроить для моя цель. К сожалению, приведенный ниже код в том виде, в каком он есть сейчас, копирует все значения из другой таблицы листов в таблицу мастер-листов, не проверяя, содержит ли мастер-лист значения в соответствующих ячейках. Таким образом, он перезаписывает все заданные значения в таблице основного листа, которые я не хочу. Код имеет несколько сообщений на немецком языке. Пожалуйста, игнорируйте их, так как они не актуальны. Большое спасибо!:

Sub VorDatenKopieren ()

    asi = ActiveSheet.Index
    nasi = Sheets(asi).Name

    If asi = 1 Then
        MsgBox "Zu " & nasi & " gibt es keine vorherige Tabelle!", _
               48, Environ("UserName")
        Exit Sub
    End If

    asiv = ActiveSheet.Index - 1
    nasiv = Sheets(asiv).Name
    mgb = MsgBox("Daten werden kopiert von " & nasiv & " nach " & nasi & Chr(13) & _
                 "Ist das OK?", 36, Environ("UserName"))
    If mgb = 7 Then Exit Sub                     ' 7 = nein
    Sheets(asiv).Select
    Range("c3:g17").Copy
    Sheets(asi).Select
    Range("c3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                             :=False, Transpose:=False
End Sub

1 Ответ

0 голосов
/ 24 апреля 2020

Даррен, есть возможность вставлять значения без пробелов с помощью SkipBlanks = True :

Range("c3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                             :=True, Transpose:=False

Так что, возможно, вам следует скопировать таблицу из мастер-листа на другой лист без пробелов и затем скопировать всю таблицу с другого листа на мастер? Это должно решить вашу проблему.

Sheets(asi).Select
Range("c3:g17").Copy
Sheets(asiv).Select
Range("c3").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                             :=True, Transpose:=False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...