使用VBA从具有行、列和值的3个电子表格创建网格
我有三张excel电子表格。第一个具有要分配给新excel电子表格的值。第二个具有数据所属的列。第三行是数据所属的行 它看起来像这样:使用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
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个不同的电子表格?还有,你试过什么?