excel - 如何将工作表的第一行连接成以逗号分隔的列表?
问题描述
我正在尝试将工作表的第一行连接到以逗号分隔的列表中。它抛出类型不匹配错误。
单元格中的所有值都是字符串,每个单元格中都有一个值。
我也尝试将标头声明为变体。
lc = Cells(1, Columns.Count).End(xlToLeft).column
headers = Join(Range(Cells(1, 1), Cells(1, lc)), ",")
Debug.Print headers
解决方案
你不能加入一个Range
,你加入一个一维数组。这里隐含的是对 的调用Range.Value
,因为该范围包含多个单元格,它将是一个 2D 变量数组:您需要将其传递给Application.Transpose
一次以将其转换为一维数组,然后再将其传递给垂直,以便该VBA.Strings.Join
功能能够使用。
另外,请注意隐式 ActiveSheet 引用:除非该代码是在工作表模块中编写的(隐式限定符是Me.
),否则所有这些不合格Range
和Cells
成员调用都会隐式处理ActiveSheet
。
With ActiveSheet
lc = .Cells(1, .Columns.Count).End(xlToLeft).column
Dim headerCells As Variant
headerCells = .Range(.Cells(1, 1), .Cells(1, lc)).Value '2D variant array
End With
Dim headers As String
headers = Join(Application.Transpose(Application.Transpose(headerCells)), ",")
Debug.Print headers
推荐阅读
- web - 未找到 Web 程序集 charconv 文件
- c# - 牛顿 json 默认字符串值不起作用?
- python - 将 numpy ndarray 作为 fsolve 函数的输入传递
- react-native - react-native redux 中的状态未定义
- reactjs - localStorage 的 window.addEventListener 不会触发 onClick
- javascript - 如果其他输入控件设置了某个值,我想验证输入标签是否有值
- python - 用于制作网格的 Python 矩阵乘法
- maven - 使用 Maven/Gradle 构建和发布到 Artifactory 的单独阶段的声明性 Jenkinsfile
- vb.net - 在列表框中使用串联的姓和名查询记录
- java - VarHandle 内存语义理解 -> 可见性