这是我的表:
我想从原始表中搜索数据,然后根据选定的m1,m2,m3,issue,wastage,extra,repack字段中的日期和品牌提供数据。 这里的问题是我的桌子没有根据我的需要进行更新。 这里我的代码没有更新品牌的数据' b'所选日期。
这是我的代码:
System.out.print
答案 0 :(得分:0)
我会选择以下
Option Explicit
Sub FindMatches()
Dim rawRng As Range, newTableDateRng As Range, newTableBrandRng As Range, cell As Range, foundDate As Range, foundBrand As Range
Set rawRng = Worksheets("shet").Range("L3:T100")
Set newTableDateRng = Worksheets("shet").Range("C2:I2")
Set newTableBrandRng = Worksheets("shet").Range("A4:A100")
With rawRng
For Each cell In .Columns(1).SpecialCells(xlCellTypeConstants)
Set foundDate = newTableDateRng.Find(What:=cell, LookIn:=xlValues, LookAt:=xlWhole)
If Not foundDate Is Nothing Then
Set foundBrand = FindValue(newTableBrandRng, cell.Offset(, 1))
If Not foundBrand Is Nothing Then
cell.Offset(, 2).Resize(, 7).Copy
Intersect(foundDate.EntireColumn, foundBrand.EntireRow).PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, , True
End If
End If
Next cell
End With
End Sub
Function FindValue(rng As Range, value As String) As Range
On Error Resume Next
Set FindValue = rng.Cells(Application.WorksheetFunction.Match(value, rng, 0))
On Error GoTo 0
End Function
请注意,根据您的屏幕截图示例,所有初始设置都特定于数据“结构”。如果您需要更改它,您必须遵循相同的“模式”(即rawRng
从标题下的第一个“原始表”数据行开始,依此类推)。另请注意,7
语句中使用的cell.Offset(, 2).Resize(, 7).Copy
号来自您发布的数据结构,您需要将值从“m1”复制到“wastage”字段,然后您必须确保“新表”中的每个“品牌”行组必须匹配此模式(即有7行)