gpt4 book ai didi

arrays - 循环将值复制到数组中

转载 作者:行者123 更新时间:2023-12-01 09:08:27 25 4
gpt4 key购买 nike

我面临的情况是,我需要在 VBA 中重现某些内容,但由于我对面向对象语言和 VBA 缺乏了解,所以有点陷入困境。

问题:

  • 我需要根据 2 列表生成一个数组或向量。
  • 第一个范围(列)包含单位计数。
  • 第二个范围(列)包含数值。

我需要根据单位数量复制该值。

例如,

if the first row contains 3 units with a value of $100 I need the array to contain $100, $100, $100.
This will need to be looped thru each row containing units.
So if row 2 contains 2 units with a value of $50
I need to complete array to be $100, $100, $100, $50, $50, and so on.

我了解这种情况需要根据总值重新调整数组。我的困境是我一直无法弄清楚嵌套的 for 循环。

我知道如何根据“单位”的数量复制值,如下所示......

    ReDim arr(0 To x - 1)
For i = 0 To x - 1
arr(i) = rng.Offset(0, 1).Value
Next

循环遍历每一行并根据单位计数复制范围内每一行的值的最佳方法是什么?

如果有人熟悉 R,我本质上是在寻找实现 rep() 函数的东西(例如,rep(df$b, df$a))并返回单个数组中的值。

非常感谢任何帮助。谢谢

最佳答案

或者一个使用 REPT 函数的单行代码,就像您在 中使用的那样:)

这假设您的数据位于 A1:B10 中 - 长度可以可变

s = Split(Join(Application.Transpose(Evaluate("=INDEx(REPT(B1:B10&"","",A1:A10),,1)"))), ",")

一个例子,将新的数组转储到 C1

s = Split(Join(Application.Transpose(Evaluate("=INDEx(REPT(B1:B10&"","",A1:A10),,1)"))), ",")
[c1].Resize(UBound(s), 1) = Application.Transpose(s)

enter image description here

关于arrays - 循环将值复制到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44336052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com