gpt4 book ai didi

VBA EXCEL 多个嵌套 FOR 循环,为表达式设置两个变量

转载 作者:行者123 更新时间:2023-12-04 20:19:53 25 4
gpt4 key购买 nike

好的,所以我做了很多搜索,找到了一些并玩了一些。我似乎无法让这些循环充分发挥作用,我可以部分获得,但不能全部获得。正如第一个循环工作正常然后它变得不稳定。T是表达式输出的目标 t.Value = time1 - time2Y是不变的设定时间和日期= time1X是时间和日期,必须从与相应 y 相同的列中的范围中提取. x= time 2我已经上传了我的工作簿的相应部分:
https://docs.google.com/open?id=0BzGnV1BGYQbvMERWU3VkdGFTQS1tYXpXcU1Mc3lmUQ
我玩过重新排列 for 循环的条件退出。我什至考虑尝试 goto,直到我注意到它的提及所产生的一大堆尸体。
我乐于接受并感谢任何建议或指导。我注意到一些语言有退出和继续选项,但它没有出现 VB 吗?
这是我的循环,我已经消除了我在尝试让它工作时造成的困惑。

Sub stituterangers()
Dim dify As Boolean
Dim difx As Boolean
Dim time2 As Date
Dim time1 As Date

For Each t In range("d7:cv7")
For Each x In range("d8:cv11")
If x > 0 Then time2 = x
For Each y In range("d2:cv2")
time1 = y
t.Value = time1 - time2
t = 0
Next y
Next x
Next t
End Sub


Sub stituterangersNEW()
Dim t As range
Dim x As range
Dim dify As Boolean
Dim difx As Boolean
Dim time2 As Date
Dim time1 As Date

On Error Resume Next

'Looping through each of our output cells.
For Each t In range("d7:cv7")



For Each y In range("d2:cv2")
If t.Column = y.Column Then
time1 = y.Value
If y = 0 Then Exit Sub
End If

For Each x In range("d8:cv11")
'Check to see if our dep time corresponds to
'the matching column in our output
If t.Column = x.Column Then

If x > 0 Then
time2 = x.Value

t.Value = time1 - time2

Exit For
End If
End If


Next x

Next y
Next t

End Sub

最佳答案

我目前无法访问您的 google 文档文件,但您的代码存在一些问题,我将在回答时尝试解决

Sub stituterangersNEW()
Dim t As Range
Dim x As Range
Dim dify As Boolean
Dim difx As Boolean
Dim time2 As Date
Dim time1 As Date

'You said time1 doesn't change, so I left it in a singe cell.
'If that is not correct, you will have to play with this some more.
time1 = Range("A6").Value

'Looping through each of our output cells.
For Each t In Range("B7:E9") 'Change these to match your real ranges.

'Looping through each departure date/time.
'(Only one row in your example. This can be adjusted if needed.)
For Each x In Range("B2:E2") 'Change these to match your real ranges.
'Check to see if our dep time corresponds to
'the matching column in our output
If t.Column = x.Column Then
'If it does, then check to see what our time value is
If x > 0 Then
time2 = x.Value
'Apply the change to the output cell.
t.Value = time1 - time2
'Exit out of this loop and move to the next output cell.
Exit For
End If
End If
'If the columns don't match, or the x value is not a time
'then we'll move to the next dep time (x)
Next x
Next t

End Sub

编辑

我改变了你的工作表来玩(见上面的新子)。这可能不能直接满足您的需求,但希望它能够展示我认为您想要做的事情背后的概念。请记住,此代码并未遵循我推荐的所有编码最佳做法(例如,验证时间实际上是 TIME,而不是其他随机数据类型)。
     A                      B                   C                   D                  E
1 LOAD_NUMBER 1 2 3 4
2 DEPARTURE_TIME_DATE 11/12/2011 19:30 11/12/2011 19:30 11/12/2011 19:30 11/12/2011 20:00
4 Dry_Refrig 7585.1 0 10099.8 16700
6 1/4/2012 19:30

使用 sub 我得到了这个输出:
    A           B             C             D             E
7 Friday 1272:00:00 1272:00:00 1272:00:00 1271:30:00
8 Saturday 1272:00:00 1272:00:00 1272:00:00 1271:30:00
9 Thursday 1272:00:00 1272:00:00 1272:00:00 1271:30:00

关于VBA EXCEL 多个嵌套 FOR 循环,为表达式设置两个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9690484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com