Excel копировать вырезать вставить данные с 1 листа на другой со статусом обновлено на листе 2 новый столбец

#excel #vba

#excel #vba

Вопрос:

Я новичок в макросе Я создал макрос, который копирует данные из столбцов A и B листа 1 Excel и вставляет их на листе 2 со статусом обновления в столбце c. Однако он не работает должным образом, он выполняется неправильным / неполным способом, например, для некоторых значений в столбце B листа 2 отображается обновлено в столбце c, но для некоторых это не так… Пожалуйста, помогите мне, ниже приведен мой код. Во-вторых, я сначала закодировал данные для копирования вставки с листа 1 на лист2, там я указал диапазон A2: A9999 и B2: B9999, я не могу это упростить. Я имею в виду, что он должен занимать весь столбец A и B, чем указанный диапазон. Пожалуйста, помогите мне с этими 2 частями………….

Ниже приведен вывод, если вы видите, что ячейки C2 и C3 пусты, они также должны быть заполнены примечанием Обновлено, чего не происходит с моим кодом

 Sub CopyData()

Dim i As Long
Dim wt As Excel.Worksheet

Set wr = Worksheets("Sheet2")

'Copies and cuts the data from sheet1(TIS) and paste the same in sheet2

With Worksheets("SampleFile")
    .Range("A2:A9999").Copy wr.Range("A2") 'Copy
    .Range("A2:A9999").Cut wr.Range("A2") 'Cut
    .Range("B2:B9999").Copy wr.Range("B2") 'Copy
    .Range("B2:B9999").Cut wr.Range("B2") 'Cut
End With


For i = 1 To wr.Cells(wr.Rows.Count, "B").End(xlUp).Row
If wr.Range("B" amp; i).Value = "FXV" Then
   wr.Range("C" amp; i).Value = "Updated"
   ElseIf wr.Range("B" amp; i).Value = "FST" Then
   wr.Range("C" amp; i).Value = "Updated"
   ElseIf wr.Range("B" amp; i).Value = "FLB" Then
   wr.Range("C" amp; i).Value = "Updated"
   ElseIf wr.Range("B" amp; i).Value = "FFH" Then
   wr.Range("C" amp; i).Value = "Updated"
   ElseIf wr.Range("B" amp; i).Value = "FFJ" Then
   wr.Range("C" amp; i).Value = "Updated"
   
   End If
Next i
End Sub
  

Ответ №1:

Этот код должен вырезать данные из A2 в B и LastRow на рабочем листе SampleFile и вставить их в диапазон A2 на рабочем листе Sheet2 . Затем он будет перебирать все строки в Sheet2 поиске значения в столбце B, если оно соответствует Select Cases вводимому Updated значению в столбце C:

 Option Explicit
Sub CopyData()

    Dim wr As Worksheet: Set wr = Worksheets("Sheet2")
    'Copies and cuts the data from sheet1(TIS) and paste the same in sheet2
    'there is no need to copy if you are going to cut
    'also use a defined range to copy instead 9999 rows
    With ThisWorkbook.Worksheets("SampleFile")
        Dim LastRow As Long: LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        'you can also cut both columns at once
        .Range("A2:B" amp; LastRow).Cut wr.Range("A2") 'Cut
    End With
    
    Dim i As Long
    With wr
        For i = 1 To .Cells(.Rows.Count, "B").End(xlUp).Row
        'in this case is way shorter to code using the Select statement
        'you could also use If x = y or x = z or x = a but Select looks cleaner.
            .Cells(i, "B") = Trim(.Cells(i, "B"))
            Select Case .Range("B" amp; i)
                Case "FXV", "FST", "FLB", "FFH", "FFJ"
                    .Range("C" amp; i) = "Updated"
            End Select
        Next i
    End With
    
End Sub
  

Комментарии:

1. Большое спасибо за короткое замыкание кодов, однако я по-прежнему сталкиваюсь с той же ошибкой, что и сейчас, поскольку FST не отображается как обновленный в столбце c

2. @AkshayChari — это FST или, может быть FST , с пробелами в конце?

3. да, в FST есть пробел,,, может быть, мне потребуется еще одна строка кода для обрезки и очистки, чтобы она обновлялась, можете ли вы, пожалуйста, помочь в кодировании, которое я только что выполнил, добавив пробел, это сработало … проблема в пробелах и недопустимых символах между ними. можем ли мы применить функцию очистки обрезки в этом макросе