使用VBA从具有行、列和值的3个电子表格创建网格

使用VBA从具有行、列和值的3个电子表格创建网格,vba,excel,Vba,Excel,我有三张excel电子表格。第一个具有要分配给新excel电子表格的值。第二个具有数据所属的列。第三行是数据所属的行 它看起来像这样: Data Value: 1 5 7 9 2 2 6 8 Column Number: 1 2 3 1 2 3 1 2 Row Number: 1 2 3 2 4 4 3 1 Column 1 2 3 Row 1 1 8 0 2 9 5 0

我有三张excel电子表格。第一个具有要分配给新excel电子表格的值。第二个具有数据所属的列。第三行是数据所属的行

它看起来像这样:

Data Value:
1 5 7 9
2 2 6 8

Column Number:
1 2 3 1
2 3 1 2

Row Number:
1 2 3 2 
4 4 3 1 
         Column
         1  2  3   
   Row
    1    1  8  0       
    2    9  5  0      
    3    6  0  7
    4    0  2  2
如何组合所有这些信息以创建一个包含以下格式的值的电子表格:

Data Value:
1 5 7 9
2 2 6 8

Column Number:
1 2 3 1
2 3 1 2

Row Number:
1 2 3 2 
4 4 3 1 
         Column
         1  2  3   
   Row
    1    1  8  0       
    2    9  5  0      
    3    6  0  7
    4    0  2  2
我曾尝试在vba中使用循环来实现这一点,但我是一名初学者,遇到了一些困难


我知道我需要使用一个循环,在每次迭代中对照行和列检查数据应该在其中的行和列。我只是不知道该怎么做。

假设同一工作簿中有不同的工作表(如果没有-创建一个新工作簿并将工作表复制过来)。我假设在每一页上使用相同范围的单元格(例如,在所有3种情况下,A1:D2的值在第一页,列号在第二页,行号在第三页)。您可以完全不用VBA,但代价是使用一些复杂的公式(受这篇优秀文章的启发:)

第一步。添加第四页,并在A1中添加公式

=CONCATENATE(Sheet3!A1,"_",Sheet2!A1)
并将其复制到适当的范围内(例如A1:D2)。这将为您提供类似于2_1的内容,它告诉您表1中的相应条目属于第2行第1列。将此范围命名为“位置”(公式选项卡-定义名称选项)

第2步-决定数据存放的位置(为了简单起见,我假设它在第4页中),并添加行号(1-4)和列号(1-3)作为标签。在我的例子中,行标签在A5:A8中,列标签在B4:C4中(参见下面的屏幕截图)。然后在要填写的值的左上角(我的例子是B5)输入以下公式(适当调整以匹配您的范围):

并将其复制到预定范围内。小心美元符号-这个公式以一种基本的方式混合了行绝对和列绝对引用。有点奇怪的是,它实际上是有效的:


您是指3个不同的工作簿(Excel文档)还是指单个工作簿中的3个不同的电子表格?还有,你试过什么?