【发布时间】:2020-05-27 07:45:22
【问题描述】:
我正在研究鸟类迁徙模式,但在试图找出在 Excel 中移动数据的最佳和最简单的方法时遇到了麻烦。我擅长 excel,但我不擅长宏和 VBA 编码,所以如果我的编码想法看起来完全错误,我提前道歉,并且寻求专家建议没有错。到目前为止,我已经使用数据透视表根据物种数量、位置和日期来缩小鸟类的范围。
之后,我将数据从每个物种的日期中移出,并将它们从一个范围堆叠到一列。
我确实找到了一个有效的 vba 代码(即使输出实际上是从左到右横向移动数据,它仍然是同一件事“移动 B4:P4、B5:P5、B6:P6 等。 ”),但这一次只有一个范围:
Sub main()
Dim i As Long
Dim cell As Range
For Each cell In Range("B4:P13")
Range("S4").Offset(i).Value = cell.Value
i = i + 1
Next cell
End Sub
我的问题是有 56 个物种和 3 个位置。所以我需要移动数据 168 次,这很荒谬。在我整理好它们之后,我在三个位置中的每一个位置对每个物种进行了 56 次单因素分析。如果有人能提供帮助,那就太棒了,对科学很有帮助。
我的想法/希望和梦想:
如果我可以在同一个 VBA 代码模块中重复代码并更改每个物种的范围和输出位置的值。所有 3 个位置都具有相同的一般格式和范围位置(加上减去两个额外日期),或者如果我可以将位置设置到另一张表。像这样……
Sub main()
Dim i As Long
Dim cell As Range
For Each cell In Range("B4:P13")
Range("S4").Offset(i).Value = cell.Value
i = i + 1
For Each cell In Range("B15:P24")
Range("U4").Offset(i).Value = cell.Value
i = i + 1
For Each cell In Range("B26:P35")
Range("W4").Offset(i).Value = cell.Value
i = i + 1
For Each cell In Range("B37:P46")
Range("Y4").Offset(i).Value = cell.Value
i = i + 1
etc…
Next cell
End Sub
看起来像这样:
或者更喜欢这样:
再次感谢您的帮助和贡献。 :D
【问题讨论】:
-
如果您已经对数据进行了规范化,则可以使用最适合此类转换的 Power Query
-
数据透视表的源数据是什么样的?
-
大概数据量——物种、位置等——都是动态的?
-
@omegastripes 当前数据透视表:imgur.com/a/o0B1F1X
-
@SJR 在所有位置(床单)中,物种都是相同的。每个物种的点数相同(1-10)。在位置 1 中,有 15 个日期,在位置 2 -3 中,有 17 个日期。所以大概物种、位置和点是静态的。并且数据(其中的数字)是动态的。
标签: excel vba pivot-table