可以直接用VBA达成,需要把问题描述的更清晰一点
一、PRINT 在哪个单无格?Ax?Cx?
二、y如果遍历?因为当Ax时y直接符值为4,是再次循环么?
三、按你的语句X=X+1一直是逐进加1的,那-1,-2,-4,-8在何处体现?这个-1是回跳么?即如果X=10时,执行X=9,8,6,2?
最好有截图说明真实执行情况。
我估计你想要的结果是这个的,我把PRINT写入A
Sub PRT()
Dim x As Integer
Dim y As Integer
Dim irow As Integer
irow = [a50000].End(xlUp).Row
y = 1
For x = 1 To irow
If Cells(x, 1) = 1 Then
Cells(x, 1) = 2 ^ (Cells(y, 2).Row Mod 4)
y = 4
Else
Cells(x, 1) = -2 ^ (Cells(y, 2).Row Mod 4)
y = y + 1
End If
Next
End Sub
追问感谢回答,我再详细描述一下。就是我现在有一列数字,比如A列,这一列数字里有1和其它数值,我想以A列为判断条件,在另外随便哪一列,比如B列,再生成一列数字。
生成的规则就是
1.如果A列该行的数值不为1,则B列该行输出-1,然后A列下一行如果还是不为1,B列输出-2,A列一直不为1则B列按照-1、-2、-4、-8的顺序循环输出
2.一旦A列某行数值为1,则B列该行输出1,然后下一列开始返回步骤1
追答Sub PRT()
Dim x As Integer
Dim y As Integer
Dim irow As Integer
irow = [a50000].End(xlUp).Row
y = 1
For x = 1 To irow
If Cells(x, 1) = 1 Then
Cells(x, 2) = 2 ^ (Cells(y, 2).Row Mod 4)
y = 4
Else
Cells(x, 2) = -2 ^ (Cells(y, 2).Row Mod 4)
y = y + 1
End If
Next
End Sub
那只需把A列改为B列
执行效果如下图