[英]Populate cells based on x by y by z cell value
我试图基于来自三个不同单元格的n-1值填充单元格。 我在x by y中取得了成功,但我遇到了z问题
例如,我输入了:
x y z
5 2 2
输出应该是:
x应该有0,1,2,3,4; 每次重复两次
y应该有0和1; 每次重复五次
z应该为0和1; 每次重复五次,但输出与x或y不同
x y z
0 1 0
1 0 0
2 1 0
3 0 0
4 1 0
0 0 0
1 1 0
2 0 0
3 1 0
4 0 0
0 1 1
1 0 1
2 1 1
3 0 1
4 1 1
0 0 1
1 1 1
2 0 1
3 1 1
4 0 1
我用了:
对于x
= IF(ROW()<= 1 + A $ 1 * A $ 2 * A $ 3 INT((ROW() - 2)/(A $ 2 * A $ 3)), “0”)
因为你
= IF(ROW()<= 1 + A $ 1 * A $ 2 * A $ 3 MOD(ROW() - 1,A $ 3), “0”)
为z
= IF(ROW()<= 1 + A $ 1 * A $ 2 * A $ 3 MOD(ROW() - 1,A $ 2), “0”)
A1到A3具有xyz的项目数。 关于我如何做到这一点有什么建议吗?
抱歉回复晚了。 如果你让自己使用VBA
(因为你在评论中提出了这个问题),让我们说你有下一张表:
您可以将下一个Macro
放在按钮GO
:
Sub CartesianProduct()
'Constants:
Dim top_x As Integer
top_x = ActiveSheet.Cells(2, 1).Value - 1
Dim top_y As Integer
top_y = ActiveSheet.Cells(2, 2).Value - 1
Dim top_z As Integer
top_z = ActiveSheet.Cells(2, 3).Value - 1
'Coordinates
Dim x As Integer
Dim y As Integer
Dim u As Integer
'Counter (row):
Dim c As Integer
c = 2
'----------
For x = 0 To top_x
For y = 0 To top_y
For z = 0 To top_z
ActiveSheet.Cells(c, 5).FormulaR1C1 = x
ActiveSheet.Cells(c, 6).FormulaR1C1 = y
ActiveSheet.Cells(c, 7).FormulaR1C1 = z
c = c + 1
Next z
Next y
Next x
End Sub
然后,通过单击GO
,您可以使用集合中的笛卡尔积集合填充表格:
如果您想避免坐标具有相同值的点,请执行以下操作:
For x = 0 To top_x
For y = 0 To top_y
For z = 0 To top_z
If x <> y Or x <> z Or y <> z Then
ActiveSheet.Cells(c, 5).FormulaR1C1 = x
ActiveSheet.Cells(c, 6).FormulaR1C1 = y
ActiveSheet.Cells(c, 7).FormulaR1C1 = z
c = c + 1
End If
Next z
Next y
Next x
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.