Сравнение, копирование и вставка с помощью 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
Вы можете напрямую назначить значение из одной ячейки в другую ячейку:
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
Похожие вопросы
Посмотрите другие вопросы по меткам vba excel-vba .net excel или Задайте вопрос