Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何在Excel中有条件地进行减法?_Vba_Excel - Fatal编程技术网

Vba 如何在Excel中有条件地进行减法?

Vba 如何在Excel中有条件地进行减法?,vba,excel,Vba,Excel,我试图在知道A列和B列是数据,C列是结果的情况下执行以下操作: A B C 1 5 (B1-A1)=4 2 3 (B2-A1)=2 3 5 (B3-A1)=4 4 7 (B4-A2)=5 5 4 (B5-A2)=3 6 9 (B6-A2)=7 . . . . 如何在Excel或Excel Visual Basic中自动执行此操作?您可以在函数($B5-$A1)中使用$,并将

我试图在知道A列和B列是数据,C列是结果的情况下执行以下操作:

A   B    C  

1   5  (B1-A1)=4  

2   3  (B2-A1)=2  

3   5  (B3-A1)=4  

4   7  (B4-A2)=5

5   4  (B5-A2)=3

6   9  (B6-A2)=7
    .  
    .  
    .  
    .  

如何在Excel或Excel Visual Basic中自动执行此操作?

您可以在函数($B5-$A1)中使用$,并将光标与C列上的单元格一起拖动到写入的最后一个元素

A       B         C
1       4       =B2-A2
1       2       =B3-A3
1       3       =B4-A4
=A2+1   5       =B5-A5
=A3+1   6       =B6-A6
=A4+1   7       =B7-A7
=A5+1   6       =B8-A8
=A6+1   7       =B9-A9
=A7+1   9       =B10-A10
您可以使用1启动前3行,然后只需在第4行A列中添加1即可;向下拖动公式。随后,您可以从A列中减去B列

唯一的缺点是,列A不是每一步递增1的序列,而是每四次递增1的序列

Sub sequence()

Dim i As Integer
Dim j As Integer
i = 2
j = 2

For i = 2 To 25 Step 3

Cells(i, 3) = Cells(i, 2) - Cells(j, 1)
Cells(i + 1, 3) = Cells(i + 1, 2) - Cells(j, 1)
Cells(i + 2, 3) = Cells(i + 2, 2) - Cells(j, 1)
j = j + 1
Next i

End Sub
下面是解决这个问题的VBA代码

您必须在中为循环定义范围,当前它设置为从第2行到第25行

第n行/列重复出现问题时,可以使用行偏移()

=B1-偏移量(A$1,汇总(行()/3,0)-1,0)
,向下复制C列

1   5   4
2   3   2
3   5   4
4   7   5
5   4   2
6   9   7

谢谢你的回复,我没有提到A列不是递增的,A列和B列是原始数据(不可调整),我可能使用了一个坏例子,使用串行形式的数据,忘记了A列中数据的形状,我的问题是,如何从A列中的一个数据中减去B列中的3个数据,如我在问题中提到的,并对A中的1072行和B中的362行执行此操作?谢谢你的努力。我做到了,但没有成功!!无论如何,谢谢你的帮助。我试过了。但是,当我复制单元格时,A$1不会移动,但是非常感谢你的努力,我在中的问题得到了回答。Regards@user3449078A$1并不意味着在你向下复制时移动……如果你尝试了它,你会看到它给出了正确的结果,如上所示。是的,你是正确的,它给了我错误的答案,因为我的列有标题,数据从第3行开始。所以,当我将数据从第1行开始移动时,它工作正常,非常感谢您的帮助!!!Regards@user3449078啊,这是有道理的。很高兴这两种方法都奏效了;)