繁体   English   中英

基于x,y乘以z单元格值填充单元格

[英]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 (因为你在评论中提出了这个问题),让我们说你有下一张表:

ActiveSheet

您可以将下一个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 ,您可以使用集合中的笛卡尔积集合填充表格:

ActiveSheet

如果您想避免坐标具有相同值的点,请执行以下操作:

    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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM