我有以下代码,可以通过简单的循环代码将数据从一个工作表导入另一个工作表。
Dim y As Integer
y = 15
For X = 15 To LR Step 1
If Len(WS.Range("B" & X)) >= 7 Then
WS.Range("B" & X).Copy
WS1.Range("E" & y).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
y = y + 1
Else
End If
Next X
我想添加一个IF语句,如果LEN大于7,则将所有上述值相加,直到最后一次值大于7 len并对这些值进行分组,以便将它们折叠成小计。
我想这将是一个嵌入我当前代码的IF语句,但不确定我将如何引用这些点。
答案 0 :(得分:0)
提案
Dim y As Integer
y = 15
Total = 0
For x = 15 To LR Step 1
If Len(ws.Range("B" & x)) > 7 Then
ws1.Range("E" & y) = Total
Total = 0
y = y + 1
ElseIf Len(ws.Range("B" & x)) = 7 Then
ws.Range("B" & x).Copy ws1.Range("E" & y)
Total = Total + ws.Range("B" & x)
y = y + 1
End If
Next x
答案 1 :(得分:0)
尝试这种方法:首先声明Integer
类型变量
Dim iSR As Integer: iSR = 15
请注意,我已为iSR
分配了值15
。由于我们将使用此变量来保存Starting Row
数字,请确保为其分配数字开头的行号。现在,在If Len(WS.Range("B" & X)) >= 7 Then
条件结束时和Next X
之前,添加以下代码(以使其仍在FOR
循环中)
If Len(WS.Range("B" & x).Value) > 7 Then
oWS.Range("C" & x).Formula = "=Sum(C" & iSR & ":C" & oWS.Range("C" & x).Offset(-1).Row & ")"
iSR = oWS.Range("C" & x).Offset(1).Row
End If
快速解释代码:IF
条件检查文本的长度是否大于7.如果是,则在" C"中分配SUM
公式。文本所在的同一行的列。 Formula
使用iSR
作为您的起始行,并使用Offset
获取当前行之前的行的行号。下一行只是获取当前行之后的行的行号,以便我们知道下一个iSR
数字是什么