我有一个"列I"其中有数据用于返工日期和" G&#34列;为集会日期。 在"列J"我想要使用"返工日期"找到最接近"组装日期的日期"专栏没有经过。它可以是与装配相同的日期,也可以在未结束之前。将它们绑在一起,"返工系列"必须与" Serial"完全相同在" E"列中。 注意:我需要在那里的时间以及在同一天发生的一些实例将有不同的时间。
我试图使用"返工日期"仔细研究整个"组装日期"列和它比较后,只要它没有超过并且序列号相同,它就返回最大值。我不知道如何使用一次返工来查看具有这些细节的其他列,并进入下一个返工日期并执行相同操作。
我确实创建了一个查看数据的列,然后在最大值上执行了vlookup,但这会导致为列中的每个返工创建一个列,这将太多。我可能会过度思考这个问题,但是我会非常感激一些意见。
图片显示了我正在使用的整个excel尝试的代码片段。它显示了按照"返工日期"创建列的方法。实例
尝试使用VBA遍历Serial的整个列,看看它是否等于Rework Serial,然后在列" L"中连接该值。 从这里我希望也比较日期并返回最大值的日期值,而不是过去。这段代码适用于返回一个单元格,每次返工对每个单元格的处理方式如何?
我走得更远,但出于某种原因,每隔三次通过循环,它就会出现错误
AssemD = DateValue(Cells(x,7))
类型不匹配。我不理解这个,因为它在没有For Each j循环的情况下运行,但是我试图将它嵌套,以便在它完成所有比较并找到最大值之后,然后将最大值写入Cells(y,12),即y计数器跟上j。
Sub RecentDate()
Dim i As Range, j As Range, x As Integer, y As Integer, AssemD As Date, ReworkD As Double, AssemTi As Double, ReworkTi As Double, AssemTot As Double, ReworkTot As Double, MaxDate As Date
x = 1
y = 1
'Set i = Range("E1:E12")
For Each j In Range("I1:I12")
For Each i In Range("G1:G12")
AssemD = DateValue(Cells(x, 7))
ReworkD = DateValue(Cells(1, 9))
AssemTi = TimeValue(Cells(x, 7))
ReworkTi = TimeValue(Cells(1, 9))
AssemTot = CDbl(AssemD) + CDbl(AssemTi)
ReworkTot = CDbl(ReworkD) + CDbl(ReworkTi)
If ReworkTot >= AssemTot And Cells(1, 8) = Cells(x, 5) Then
MaxDate = Cells(x, 7)
End If
Cells(x, 13) = MaxDate
x = x + 1
Next i
Cells(y, 12) = MaxDate
y = y + 1
Next j
End Sub
答案 0 :(得分:0)
我不得不使用VBA,但是使用以下代码获得它。
Sub RecentDate()
Dim i As Range, j As Range, x As Integer, y As Integer, AssemD As Date, ReworkD As Double
Dim AssemTi As Double, ReworkTi As Double, AssemTot As Double, ReworkTot As Double, MaxDate As Date, LineFault As String
x = 1
y = 1
'Set i = Range("E1:E12")
For Each j In Range("I1:I12")
For Each i In Range("G1:G12")
AssemD = DateValue(Cells(x, 7))
ReworkD = DateValue(Cells(y, 9))
AssemTi = TimeValue(Cells(x, 7))
ReworkTi = TimeValue(Cells(y, 9))
AssemTot = CDbl(AssemD) + CDbl(AssemTi)
ReworkTot = CDbl(ReworkD) + CDbl(ReworkTi)
If ReworkTot >= AssemTot And Cells(y, 8) = Cells(x, 5) Then
MaxDate = Cells(x, 7)
LineFault = Cells(x, 6)
End If
Cells(x, 13) = MaxDate
x = x + 1
Next i
x = 1
Cells(y, 12) = MaxDate
Cells(y, 14) = LineFault
y = y + 1
MaxDate = "1/1/1900 12:00"
LineFault = ""
Next j
End Sub
绝对是在思考这个。