我需要VBA帮助根据多个标准替换某个列的内容。
如果在Sheet2的Extension列中找到Sheet1中的扩展列中的值 并且Sheet1中的日期等于或落在Sheet2中的Date From和Date To之间,将Sheet1中的Number替换为Sheet2中的相应Number,Else,什么都不做。
这是详细信息的屏幕截图。 http://prntscr.com/3tnf6t
带有示例条目的文件的链接。 http://1drv.ms/1skLYJR
我尝试录制一个执行自动过滤器的宏,但无法找到为符合所有条件的记录输入相应数字的方法。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:0)
我必须对您的Excel进行一些小的更改才能使其正常工作。我用Sheet-Function TODAY()替换了Sheet2中的Today,它只返回当前日期。之后这个快速而肮脏的解决方案应该可以解决您的问
Sub checkAndReplace()
Dim currentRowS1, currentRowS2 As Integer
Range("B1:A" + CStr(ThisWorkbook.Worksheets("Sheet1").UsedRange.Count) + ",A1:A" + CStr(ThisWorkbook.Worksheets("Sheet2").UsedRange.Count)).Select
For currentRowS1 = 2 To ThisWorkbook.Worksheets("Sheet1").UsedRange.Count
For currentRowS2 = 2 To ThisWorkbook.Worksheets("Sheet2").UsedRange.Count
If ThisWorkbook.Worksheets("Sheet1").Range("B" & currentRowS1).Text = ThisWorkbook.Worksheets("Sheet2").Range("A" & currentRowS2).Text Then
If DateDiff("d", ThisWorkbook.Worksheets("Sheet1").Range("A" & currentRowS1), ThisWorkbook.Worksheets("Sheet2").Range("B" & currentRowS2)) <= 0 And DateDiff("d", ThisWorkbook.Worksheets("Sheet1").Range("A" & currentRowS1), ThisWorkbook.Worksheets("Sheet2").Range("C" & currentRowS2)) >= 0 Then
ThisWorkbook.Worksheets("Sheet1").Range("C" & currentRowS1).Value = ThisWorkbook.Worksheets("Sheet2").Range("D" & currentRowS2).Value
End If
End If
Next
Next
End Sub