我有一本工作簿,用于安排作业中的下一个即将执行的任务。每行有28个单元格,每个单元格代表提前4周内的一周中的某天。我制定了一个公式来检查单元格的日期以及任务的开始和结束日期,并相应地填充该单元格。
这是公式:
=IFERROR(IF(AND(ISNUMBER(SEARCH("Delivery",$D16)),VALUE(F$10)=VALUE('Calculation
New'!$AO53)),"D",IF(AND(ISNUMBER(SEARCH('Calculation
New'!$BH$13,$AJ16)),VALUE(F$10)>=VALUE('Calculation
New'!$AO53),VALUE(F$10)<=VALUE('Calculation
New'!$AP53)),"N",IF(AND(ISNUMBER(SEARCH('Calculation
New'!$BH$12,$AJ16)),VALUE(F$10)>=VALUE('Calculation
New'!$AO53),VALUE(F$10)<=VALUE('Calculation
New'!$AP53)),"E",IF(AND(VALUE('Calculation
New'!$AO53)=VALUE('Calculation New'!$AP53),F$10='Calculation
New'!$AO53,NOT(ISNUMBER(SEARCH('Calculation
New'!$BH$9,$D16)))),"SF",IF(AND(ISNUMBER(SEARCH('Calculation
New'!$BH$9,$D16)),VALUE(F$10)>=VALUE('Calculation
New'!$AO53),VALUE(F$10)<=VALUE('Calculation
New'!$AP53)),"I",IF(AND(VALUE(F$10)>VALUE('Calculation
New'!$AO53),VALUE(F$10)<VALUE('Calculation
New'!$AP53)),"X",IF(VALUE(F$10)=VALUE('Calculation
New'!$AO53),"S",IF(VALUE(F$10)=VALUE('Calculation
New'!$AP53),"F","")))))))),"")
该公式的一些注意事项: 工作表“ SIS”上的D16:D85是在任务描述中查找某些单词的位置 工作表“ Calculation New”上的BH9包含一个要比较的词。字词范围是BH3:BH13 表格“ SIS”上的F10:AF10包含星期几下方的单元格的日期 工作表“ Calculation New”上的AO53:AO122包含任务的开始日期 工作表“ Calculation New”上的AP53:AP122包含任务的结束日期
目前,我得到70行乘以28个单元格,每个单元格中都有此公式。现在,我想使用VBA代码做同样的事情,但是我很难入门。我对VBA不太了解。我研究了关于嵌套每个循环的问题,但到目前为止,我还没有成功。
我将不胜感激。
先谢谢您 丹
这是我到目前为止编写的尚不完整的代码,但我遇到了麻烦,需要一些建议
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SDate As Range
Dim EDate As Range
Dim WDate As Range
Set SDate = Worksheets("Calculation New").Range("SDate")
Set EDate = Worksheets("Calculation New").Range("EDate")
Set WDate = Worksheets("Calculation New").Range("WDate")
For SDate = 1 To Worksheets("Calculation New").Range("SDate").End(xlDown) 'lenght of range varies
'For WDate = 1 To 28 ' length is always same
'If cell = WDate Then 'i want to compare each cell of WDate with the start date
'cell = "X"
'Next
Next
End Sub
答案 0 :(得分:0)
要开始使用VBA,您可能要在这里开始。有很多可疑的网站提供VBA代码,但这直接来自Microsoft,涵盖了基础知识。编码愉快!
答案 1 :(得分:0)
For循环可能很棘手-通常,您可以从一个说r = ActiveSheet.UsedRange
的数组开始并遍历它
Sub nestedLoop()
r = ActiveSheet.UsedRange
For i = LBound(r) To UBound(r)
For j = LBound(r, 2) To UBound(r, 2)
'evaluate r(i,j) do something
'Debug.print r(i,j)
Next j
Next i
End Sub