如果在图纸表格的A列中找到与图纸Source_1
中的A列匹配的值,则此宏将某些单元从图纸Source_1
复制到图纸表格。问题是,如果表Source_1
的列A中的值重复。它一次又一次地从sheet Source_1
复制第一个匹配项的单元格。我想让它复制不同的事件(行)。
Sub RechercheValeursFSI_1()
Dim FeSource As Worksheet
Dim FeDest As Worksheet
Dim PlgSource As Range
Dim PlgDest As Range
Dim Cel As Range
Dim Ligne As Long
Set FeSource = Worksheets("SOURCE_1")
Set FeDest = Worksheets("Table")
With FeSource
Set PlgSource = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
With FeDest
Set PlgDest = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
For Each Cel In PlgDest
On Error Resume Next
Ligne = Application.WorksheetFunction.Match(Cel.Value, PlgSource, 0) + 1
If Err.Number = 0 Then
Cel.Offset(, 4).Resize(, 5).Value = FeSource.Cells(Ligne, 1).Offset(, 1).Resize(, 5).Value
End If
Next Cel
End Sub
发布于 2020-10-03 16:58:36
这对我来说很有效:
Sub RechercheValeursFSI_1()
'Declarations.
Dim FeSource As Worksheet
Dim FeDest As Worksheet
Dim PlgSource As Range
Dim PlgDest As Range
Dim Cel As Range
Dim Ligne As Long
Dim IntCompteur As Integer
'Setting variables.
Set FeSource = Worksheets("SOURCE_1")
Set FeDest = Worksheets("Table")
With FeSource
Set PlgSource = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
With FeDest
Set PlgDest = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))
End With
'Covering the whole PlgDest.
For Each Cel In PlgDest
On Error Resume Next
'Setting Ligne for each occurence the code already met.
IntCompteur = 0
Ligne = 0
Do Until IntCompteur >= Excel.WorksheetFunction.CountIf(FeDest.Range(FeDest.Cells(1, 1), Cel), Cel.Value)
Ligne = Application.WorksheetFunction.Match(Cel.Value, PlgSource.Resize(PlgSource.Rows.Count - Ligne + 1).Offset(Ligne - 1, 0), 0) + Ligne
IntCompteur = IntCompteur + 1
Loop
'Copy-pasting the values.
If Err.Number = 0 Then
Cel.Offset(, 4).Resize(, 5).Value = FeSource.Cells(Ligne, 1).Offset(, 1).Resize(, 5).Value
End If
Next Cel
End Sub
我添加了一个整数变量(IntCompteur)来运行Do-Loop循环。该循环根据在已经覆盖的单元格中Cel中的值先前出现的次数来重复其自身。它设置Ligne值,直到它到达所需的单元。它基本上实现了在搜索给定值的匹配函数中调整范围的大小。
https://stackoverflow.com/questions/64179001
复制相似问题