excel中如何让某一列以-1,-2,-4,-8的顺序循环,如同行的A列满足条件则该行数字变成1,下一行循环重置

用代码大概是下面的意思,比较乱,而且有些语法不是excel函数里的,不过应该能看懂,有大神能解决吗?可以追加悬赏
int x=1,y=1
if Ax=1
print 2^(mod(row(By),4)),y=4,x=x+1
else
print -2^(mod(row(By),4)),y=y+1,x=x+1

可以直接用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列

执行效果如下图

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-17
B1: =IF(A1=1,1,-1)
B2: =IF(A2=1,1,IF(OR(B1=-8,B1=1),-1,B1*2)),下拉复制本回答被提问者采纳
第2个回答  2019-04-17
发文件来看看
第3个回答  2019-04-17
诸葛亮·庞统·法正·简雍·麋竺·孙乾·伊籍·秦宓·蒋琬·费袆·李严·费诗·谯周·徐庶(前期)·马良·董和·郤正·马谡·张松
相似回答