当我运行程序时,没有任何反应。我认为这是因为我没有使用正确的变量类型,或者我没有正确地进行变量和值赋值。
这就是我想要的代码:
对于第80行,第6列到第90行,第6列的每个单元格,我希望j
是该单元格中指定的INTEGER。对于10到100之间的每一列,如果Cells(i,2)
中的DATE与Cells(1,k)
中的DATE相同,那么我想将Cells(j, k)
设置为Cells(j, 6)
中的INTEGER 。
请帮我更正此代码。
Sub TestSub()
Dim i As Integer, i2 As Integer, i3 As Integer
Dim j As Integer, j2 As Integer, j3 As Integer
Dim k As Integer, k2 As Integer, k3 As Integer
For i = 81 To 95
j = Cells(i, 6) 'j becomes the row # of the equipment
For k = 8 To k = 115
If Cells(i, 2) = Cells(1, k) Then Cells(j, k) = Cells(j, 6) 'Cells(i,2)->NEXT PM DATE Cells(1,k)->CALENDER DATE (MM/1/YY)
Next k
Next i
For i2 = 97 To 105
j2 = Cells(i2, 6)
For k2 = 8 To k2 = 115
If Cells(i2, 2) = Cells(1, k2) Then Cells(j2 + 1, k2) = Cells(j2 + 1, 6)
Next k2
Next i2
For i3 = 107 To 121
j3 = Cells(i3, 6)
For k3 = 8 To k3 = 115
If Cells(i3, k3) = Cells(j3, 6) Then Cells(j3 + 2, k3) = Cells(j3 + 2, 6)
Next k3
Next i3
End Sub
答案 0 :(得分:0)
这是您的代码正在做的事情:
它将范围B80:B90
(第80到90行)中每个单元格的日期与范围J1:CV1
中的单元格日期进行比较(第10列到第100列) )
如果比较的日期相等,则它取同一行和第6列中的值(F
)。然后,此值用于引用行号,并将该行号放在包含相同日期的列中。
该程序正在验证范围B80:B90
中的日期,其中日期范围为J1:CV1
,对于那些找到相等的日期,正在更新由{{1}范围内的相应值确定的行中的相应单元格}}
让我们看一下以下示例案例,其中单元格F80:F90
中的日期等于单元格B80
中的日期,单元格J1
中的值为F80
。
然后程序将在单元格97
F97
的值
J97
因此,如果程序看起来什么都没做,并且看不到任何结果,或者是因为比较范围中没有相同的日期,或者因为预期结果会显示在Dim i As Integer, j As Integer, k As Integer
For i = 80 To 90
If i = 89 Then Stop
j = Cells(i, 6)
For k = 10 To 100
'as per the sample case
'i = 80 ; j = 97 and k = 10
'date in cell(B80) = date in cell(J1)
'If Cells(i, 2) = Cells(1, k) Then Cells(j, k) = Cells(j, 6)
'then J97 = F97
'Replaced with:
If Cells(i, 2) = Cells(1, k) Then Cells(j, 6) = Cells(i, 6)
Next k: Next
范围内,但是范围J80:CV90
中的值确定不同的输出范围(即范围F80:F90
中的值低于80或高于90.
我要求提供范围F80:F90
中的值以验证上述内容。
所以如果目标是:
如果日期相等,则它取同一行和第6列(F)中的值并将该值插入单元格(j,6)
然后更换了行
F80:F90
带行
If Cells(i, 2) = Cells(1, k) Then Cells(j, k) = Cells(j, 6)
If Cells(i, 2) = Cells(1, k) Then Cells(j, 6) = Cells(i, 6)
的值是j
中由行确定的值:
cell(i,6)
基本上,如果在范围j = Cells(i, 6)
中找到了单元格B80
中的日期,则将J1:CV1
,单元格73
或F80
中的值输入到单元格{{ 1}}或Cell(i,6)
。
答案 1 :(得分:0)
问题是你感到困惑,因为你使用了单字母变量名,并且在你的代码中犯了一个不易识别的错误。要更正错误,请更改以下行:
If Cells(i, 2) = Cells(1, k) Then Cells(j, k) = Cells(j, 6)
改为:
If Cells(i, 2) = Cells(1, k) Then Cells(j, k) = Cells(i, 6)
请注意,唯一的区别是,不是将其设置为Cells(j, 6)
,而是需要将其设置为Cells(i, 6)
。对于新程序员来说,这是一个常见的错误,并且使用描述性变量名称是一个好习惯的确切原因。它可以防止这样的简单错误。
答案 2 :(得分:0)
当提问者完全改变代码时,必须发布第二个答案:
这些行永远不会起作用
For k = 8 To k = 115
For k2 = 8 To k2 = 115
For k3 = 8 To k3 = 115
更改为正确的格式
For k = 8 To 115
For k2 = 8 To 115
For k3 = 8 To 115
然后尝试