Сравнение, копирование и вставка с помощью VBA Excel

Было бы очень полезно, если бы мы могли помочь с этим! Итак, я пытаюсь сравнить "Столбец А" (номер задания) из "ЧПУ DEPT" и "Столбец А" (Номер задания) из списка емкости. Затем сравните "Столбец B" (MainMachine от емкости) до "Столбец K" (текущий WC отключен от CNC Dept). Если они оба являются Истинными, мы хотели бы Копировать столбцу N (Общее время) и вставить ее на "Столбец P" (Нет данных по ЧПУ DEPT). У меня проблемы с кодом, указанным ниже. Синтаксис прекрасен, но он возвращает значение #### VALUE. Код копирует значение со второго листа и вставляет его в текущий лист. Скопированная ячейка получает свое значение из функции VLOOKUP на другом листе. Я думаю, что это может создать проблему. Есть ли способ скопировать только числовое значение ячейки, а не формулу? Или, возможно, вставьте только значение (например, пункт меню "Особые значения вставить")?

Здесь мой КОД СЕЙЧАС

Вариант Явный

Sub transfer()
Dim i As Long
Dim j As Long
Dim lastrow1 As Long
Dim lastrow2 As Long
Dim jobnum As String
Dim mainmachine As String
Dim WBT As Workbook ''''This Workbook
Dim WBC As Workbook ''''CapacitySummary workbook 

Set WBT = Workbooks("CNC TEST.xlsx")
Set WBC = Workbooks("CapacitySummary.xlsx")
lastrow1 = WBT.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
lastrow2 = WBC.Worksheets("DATA").Range("A" & Rows.Count).End(xlUp).Row

WBT.Worksheets("sheet1").Activate
For i = 2 To lastrow1
jobnum = WBT.Sheets("Sheet1").Cells(i, "A").Value
mainmachine = WBT.Sheets("Sheet1").Cells(i, "K").Value
WBC.Worksheets("DATA").Activate


For j = 2 To lastrow2

If WBC.Worksheets("DATA").Cells(j, "A").Value = jobnum And WBC.Worksheets("DATA").Cells(j, "B").Value = mainmachine Then  ''  CapacitySummary workbook
WBC.Worksheets("DATA").Activate
WBC.Worksheets("DATA").Range(Cells(i, "N"), Cells(i, "N")).Copy

''''Choosing Range to copy
WBT.Worksheets("Sheet1").Activate
WBT.Worksheets("Sheet1").Range(Cells(j, "P"), Cells(j, "P")).Select
'Range.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
''''Choosing Range to paste

End If

Next j
Application.CutCopyMode = False

Next i



'Application.ScreenUpdating = True
'Stoptime = Time
'elapsedTime = (Stoptime - StartTime) * 24 * 60
'MsgBox "List Complete " & elapsedTime & " minutes. " & Chr(13)
'findConn.Close

End SubBC As Workbook ''''CapacitySummary workbook 

Set WBT = Workbooks("CNC TEST.xlsx")
Set WBC = Workbooks("CapacitySummary.xlsx")

lastrow1 = WBT.Worksheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
lastrow2 = WBC.Worksheets("DATA").Range("A" & Rows.Count).End(xlUp).Row

WBT.Worksheets("sheet1").Activate
For i = 2 To lastrow1
jobnum = WBT.Sheets("Sheet1").Cells(i, "A").Value
mainmachine = WBT.Sheets("Sheet1").Cells(i, "K").Value
WBC.Worksheets("DATA").Activate


For j = 2 To lastrow2

If WBC.Worksheets("DATA").Cells(j, "A").Value = jobnum And WBC.Worksheets("DATA").Cells(j, "B").Value = mainmachine Then  ''  CapacitySummary workbook
WBC.Worksheets("DATA").Activate
WBC.Worksheets("DATA").Range(Cells(i, "N"), Cells(i, "N")).Copy

''''Choosing Range to copy
WBT.Worksheets("Sheet1").Activate
WBT.Worksheets("Sheet1").Range(Cells(j, "P"), Cells(j, "P")).Select
'Range.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
''''Choosing Range to paste

End If

Next j
Application.CutCopyMode = False

Next i



'Application.ScreenUpdating = True
'Stoptime = Time
'elapsedTime = (Stoptime - StartTime) * 24 * 60
'MsgBox "List Complete " & elapsedTime & " minutes. " & Chr(13)
'findConn.Close

End Sub CNC DEPT CAPACITY

0
источник поделиться
1 ответ

Вы можете напрямую назначить значение из одной ячейки в другую ячейку:

If WBC.Worksheets("DATA").Cells(j, "A").Value = jobnum And _
   WBC.Worksheets("DATA").Cells(j, "B").Value = mainmachine Then


    WBT.Worksheets("Sheet1").Cells(j, "P").Value = _
        WBC.Worksheets("DATA").Cells(i, "N").Value


End If
+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос