gpt4 book ai didi

VBA在连接函数中识别范围内的最后一个单元格

转载 作者:行者123 更新时间:2023-12-04 21:56:40 25 4
gpt4 key购买 nike

我正在编写一个函数,它将采用一系列单元格并将它们的值返回到以逗号分隔的单个单元格中。

所以三个或四个股票代码的列表看起来像这样:

GOOG, TSLA, APPL

简单的方法是:
For Each cell In rng
Tickers = Tickers & cell.Value & ", "
Next cell

当然,问题是最后一个值会有一个不受欢迎的逗号。

所以我认为有可能包含 If将更改最后一个单元格的输出的语句,如下所示:
For Each cell In rng
If cell = rng.Count - 1 Then
Tickers = Tickers & cell.Value & "! "
Else
Tickers = Tickers + cell.Value & ", "
End If
Next cell

但是,我认为这似乎不起作用,因为 cellrng可能不是简单的整数,所以 count-1没有意义。

那么解决这个问题的最佳方法是什么?有没有 rng的方法这将允许 If声明知道单元格是否确实是该范围内的最后一个?

最佳答案

使用分隔符连接一堆字符串的唯一最佳方法是使用 VBA.Strings.Join函数,它需要一个一维数组和一个分隔符。因此,您首先需要将输入范围转换为一维数组。

This answer解释如何从 Range 中获取一维数组.

因此,假设您的输入范围是连续的,您可以这样做,然后使用 VBA.Strings.Join函数来连接结果。

例如,如果您的值位于 Sheet1!A1:A10 ,这个单行代码为您提供用逗号分隔的 10 个值:

VBA.Strings.Join(Application.Transpose(Sheet1.Range("A1:A10").Value),", ")

如果范围不连续,那么你 Dim使用 Count 的数组源范围内的单元格,使用 For Each 迭代每个单元格就像你正在做的那样,填充数组,然后你的函数可以返回 Join(theValues, ", ") .

然后,如果你想附加一个感叹号,你不需要关心哪个单元格是最后一个 - 你只需在你的字符串上附加一个感叹号就可以了。

关于VBA在连接函数中识别范围内的最后一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43193390/

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