我有两个excel工作簿,即"Source.xlsx“和"Target.xlsx”,其数据如下:
Source.xlsx
A B C D E
Signal From To Conductor Cable
#112 68 145 1 1935
#113 78 146 2 1936
#114 88 147 3 1937
#115 98 148 4 1938
#116 108 149 1 1939
#117 118 150 2 1940
#118 128 151 3 1941
#119 138 152 4 1942
#120 148 153 1 1943
#121 158 154 2 1944Traget.xlsx
A B C D E
From To Conductor Signal Cable
68 145 1935
78 146 1936
88 147 1937
98 148 1938
108 149 1939
118 150 1940
165 151 1941
138 152 1942
122 133 1943
158 154 1944要求:
我尝试了以下代码:
Sub E3ToEPlan()
' E3ToEPlan Macro
' Macro to Check/ Transfer data in E3 and EPlan Excel files
Dim sourcebook As Workbook, targetbook As Workbook
Dim sourcesheet As Worksheet, targetsheet As Worksheet
Dim sourcefilename As String, targetfilename As String
sourcefilename = "C:\Source.xlsx"
targetfilename = "C:\Target.xlsx"
Set sourcebook = Workbooks.Open(sourcefilename)
Set targetbook = Workbooks.Open(targetfilename)
Set sourcesheet = sourcebook.Worksheets(1)
Set targetsheet = targetbook.Worksheets(1)
Dim column_count As Long, row_count As Long
column_count = sourcesheet.Columns.Count
row_count = sourcesheet.Rows.Count
'sourcesheet.Range("A2:A9").Copy
'targetsheet.Range("D2:D9").PasteSpecial
'Condition to match the data in the other workbook
Dim i As Integer, j As Integer
For i = 0 To column_count
'For j = 0 To column_count
If sourcesheet.Cells(i, 2).Value = targetsheet.Cells(i, 1).Value And sourcesheet.Cells( _
i, 3).Value = targetsheet.Cells(i, 2).Value And sourcesheet.Cells(i, 5).Value = targetsheet _
.Cells(i, 5) Then
sourcesheet.Cells(i, 1).Value.Copy
targetsheet.Cells(i, 4).Value.PasteSpecial
sourcesheet.Cells(i, 4).Value.Copy
targetsheet.Cells(i, 3).Value.PasteSpecial
targetsheet.Cells(i, column_count).Interior.Color = vbGreen
End If
'Next j
Next i
End Sub但这让我在If语句上出错了。

发布于 2016-12-22 06:31:28
我已经测试过这段代码了,它还能工作。
有几个问题:
Value.Copy Value引用单元格中的值,即公式或文本字符串的结果。Columns.Count计数工作表中的所有Columns,同样适用于Rows。我添加了其他代码来确定Columns和Rows的使用量。Row 0,它用作For i = 0 To column_count的起始行,随后我将其从1改为'LastRow‘,我假设您希望遍历每一行。见下面的代码:
Option Explicit
Sub E3ToEPlan()
' E3ToEPlan Macro
' Macro to Check/ Transfer data in E3 and EPlan Excel files
Dim sourcebook As Workbook, targetbook As Workbook
Dim sourcesheet As Worksheet, targetsheet As Worksheet
Dim sourcefilename As String, targetfilename As String
sourcefilename = "C:\Source.xlsx"
targetfilename = "C:\Target.xlsx"
Set sourcebook = Workbooks.Open(sourcefilename)
Set targetbook = Workbooks.Open(targetfilename)
Set sourcesheet = sourcebook.Worksheets(1)
Set targetsheet = targetbook.Worksheets(1)
Dim LastColumn As Long
LastColumn = sourcesheet.Cells(1, Columns.Count).End(xlToLeft).Column
Dim LastRow As Long
With sourcesheet
LastRow = .Range("A1").SpecialCells(xlCellTypeLastCell).Row
End With
'Condition to match the data in the other workbook
Dim CurrentRow As Long
Dim SourceShtColB As String, SourceShtColC As String, SourceShtColE As String
Dim TargetShtColA As String, TargetShtColB As String, TargetShtColE As String
For CurrentRow = 1 To LastRow
SourceShtColB = sourcesheet.Cells(CurrentRow, 2).Value
TargetShtColA = targetsheet.Cells(CurrentRow, 1).Value
SourceShtColC = sourcesheet.Cells(CurrentRow, 3).Value
TargetShtColB = targetsheet.Cells(CurrentRow, 2).Value
SourceShtColE = sourcesheet.Cells(CurrentRow, 5).Value
TargetShtColE = targetsheet.Cells(CurrentRow, 5).Value
If SourceShtColB = TargetShtColA And _
SourceShtColC = TargetShtColB And _
SourceShtColE = TargetShtColE Then
targetsheet.Cells(CurrentRow, 4) = sourcesheet.Cells(CurrentRow, 1)
targetsheet.Cells(CurrentRow, 3) = sourcesheet.Cells(CurrentRow, 4)
targetsheet.Cells(CurrentRow, LastColumn).Interior.Color = vbGreen
End If
Next CurrentRow
End Subhttps://stackoverflow.com/questions/41276542
复制相似问题