构建逗号分隔字符串

use*_*468 7 string excel vba excel-vba

我想从Range构建一个逗号分隔的字符串A1:A400.

这样做的最佳方式是什么?我应该使用For循环吗?

GSe*_*erg 17

最懒的方式是

s = join(Application.WorksheetFunction.Transpose([a1:a400]), ",")
Run Code Online (Sandbox Code Playgroud)

这是因为.Value多单元范围的属性返回一个2D数组,并且Join期望一维数组,并且Transpose试图太有用,所以当它检测到只有一列的二维数组时,它会将它转换为一维数组.

在生产中,建议使用至少少一点懒惰的选项,

s = join(Application.WorksheetFunction.Transpose(Worksheets(someIndex).Range("A1:A400").Value), ",")
Run Code Online (Sandbox Code Playgroud)

否则将始终使用活动表.

  • 这是对三种相当令人困惑的行为的精美简洁解释,我总是对此有所了解.我现在大约四分之三. (4认同)