所以,我有一个.xlsx数据集,我称之为“源”数据集。“源”数据集有数百行关于每个物种昆虫数量的信息。数据集每列的标题都有每个物种的名称。我需要将此数据转置到另一个数据集的同一列,也是一个.xlsx文件,我称之为“命运”数据集。
我需要创建一个循环来执行以下操作:
1.从单元格“A2”开始,迭代“源”数据集每行的列“A”,并验证是否有数据。
1.如果单元格“A2”中有数据,则将整个信息从单元格“B2”复制到单元格“E2”。
1.将复制的数据转置到“destiny”数据集的“C”列,从单元格“C2”开始
1.然后,在下一次迭代中,验证源数据集的单元格“A3”中是否有数据,并将整个信息从单元格“B3”复制到单元格“E3”。
1.然后将复制的数据转置到“destiny”数据集的列“C”,但这次从单元格“C2”下面的7个单元格开始,也就是说,将其转置到单元格“C8”。
1.并且在下一次迭代中,总是将来自“源”数据集的数据转置到最后转置的数据之下7个单元。
我知道这有点令人困惑,但下面的例子应该澄清:
“源”数据集看起来像这样:
Point|Spongillidae|Olindiidae|Hydridae|Oceaniidae|
:------|---------:|---------:|-------:|---------:|
MK1 |3 | |1 |5 |
RT2 |2 |7 | | |
GT3 |10 |1 |6 |15 |
字符串
当前的“命运”数据集目前看起来像这样:
Point| Species |Value |
:----|:----------:|-----:|
MK1 |Spongillidae| |
MK1 |Olindiidae | |
MK1 |Hydridae | |
MK1 |Oceaniidae | |
MK1 |Colletor |TG |
MK1 |Habitat |Edge |
RT2 |Spongillidae| |
RT2 |Olindiidae | |
RT2 |Hydridae | |
RT2 |Oceaniidae | |
RT2 |Colletor |DG |
RT2 |Habitat |Riffle|
GT3 |Spongillidae| |
GT3 |Olindiidae | |
GT3 |Hydridae | |
GT3 |Oceaniidae | |
GT3 |Colletor |JB |
GT3 |Habitat |Riffle|
型
最后,“命运”数据集应该是这样的:
Point| Species |Value |
:----|:----------:|-----:|
MK1 |Spongillidae|3 |
MK1 |Olindiidae | |
MK1 |Hydridae |1 |
MK1 |Oceaniidae |5 |
MK1 |Colletor |TG |
MK1 |Habitat |Edge |
RT2 |Spongillidae|2 |
RT2 |Olindiidae |7 |
RT2 |Hydridae | |
RT2 |Oceaniidae | |
RT2 |Colletor |DG |
RT2 |Habitat |Riffle|
GT3 |Spongillidae|10 |
GT3 |Olindiidae |1 |
GT3 |Hydridae |6 |
GT3 |Oceaniidae |15 |
GT3 |Colletor |JB |
GT3 |Habitat |Riffle|
型
我希望有人能帮助我找到解决这个问题的方法。
2条答案
按热度按时间f87krz0w1#
这也可以使用Windows Excel 2010+和Microsoft 365(Windows或Mac)中提供的Power Query来完成
使用Power Query
Home => Advanced Editor
Applied Steps
以了解算法的数据
字符串
的
Colletor
和Habitat
的源表开始,然后生成整个Destiny表。例如,如果您的
Source
表看起来像:的
然后一个简单的
UnPivot
将产生Destiny
表:型
生产=>
的
如果这是可行的,代码可以很容易地修改,以包括“空白”条目以及所需的排序顺序。
qvtsj1bj2#
请确保您的初始数据从Sheet 1的左上角开始(A1=“点”)。
在Excel中创建一个宏,并将其命名为Sub change_format(),然后将以下代码粘贴在“Sub change_format()”和“End sub”之间。然后运行它,您将在Sheet 2中获得结果。确保保存您的文件为.xlsm格式!!
字符串