【发布时间】:2020-10-29 09:54:29
【问题描述】:
我不确定如何在谷歌搜索中解释这个问题,所以我不确定是否有人问过这个问题。
我有一个 vba 函数,它接受一个范围并将其转换为逗号分隔值的字符串。 它就像一个魅力。
现在我希望它只输出前 41 个条目,向下切换一行并输出该范围内的下 41 个条目。
我无法完全理解它,感觉就像一个简单的循环,但我无法到达那里。
我在网上某处找到了 csvrange 宏 :)
Function csvRange(myRange As Range)
Dim csvRangeOutput
Dim entry As Variant
For Each entry In myRange
If Not IsEmpty(entry.Value) Then
csvRangeOutput = csvRangeOutput & entry.Value & ","
End If
Next
csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function
所需的输出看起来像这样,一个字符串位于 B 列中,每组 41 个值在一行上分隔,每次函数到达下一个 nr 42 时向下偏移 1。
【问题讨论】:
-
是不是像在里面嵌套另一个循环一样简单,它检查第一个循环中的计数器与 41 的对比,然后结束并返回一个重置计数器?这有意义吗
-
听起来不错,你试一试了吗?请注意,示例输入数据和所需的输出数据将始终有助于理解您要实现的目标(如果您将它们包含在您的问题中)。见minimal reproducible example。
-
那么,您想先“输出前 41 个条目”吗?以何种方式?像一个由 41 个条目组成的字符串,用逗号分隔,或者每个单独的实体在一个单独的单元格中?字符串的其余部分相同。字符串是否少于 82 个这样的分隔元素?如果不是,是否应该重复该操作,每次复制 41 个条目?
-
是的 41 个值中的一个字符串,然后向下跳过一行,并在接下来的 41 个值中用逗号分隔一个新字符串。
-
示例输入范围为 A1:A82
标签: excel vba date-range