【问题标题】:Use comma separated value of a single cell as input for array formula使用单个单元格的逗号分隔值作为数组公式的输入
【发布时间】:2020-01-10 01:20:02
【问题描述】:

我想构建一个接受单个单元格的分隔值作为输入的数组公式:

单元格 A1:1;3;4

单元格 A2:={Sum(If(A3:F3)=A1,A4:F4))}

如何告诉 excel 将 A1 中的字符串解释为数组? 我尝试设置自定义 vba 函数,但无法将 vba 数组正确返回到 excel 公式。

谁能帮忙?

我对 VBA 的尝试:

Function Matrix(vector)
Dim arr As Variant

arr = Array(Split(vector, ";"))
Matrix = arr


End Function

在上面的公式中,我将 A1 替换为 Matrix(A1)。 但是向量的值是作为字符串而不是整数返回的(对不起,实际上使用的是德语 Excel):

谢谢 彼得

【问题讨论】:

  • 查看我的编辑。谢谢!
  • Split返回一个数组,那么Array(Split(vector, ";"))中的Array有什么意义呢?

标签: excel vba


【解决方案1】:

一些聪明的某某会为您提供我期望的公式,但这里有一个 VBA 解决方案。你需要传递两个参数(至少)我认为 - 数组和查找范围。

Function Matrix(vector, r As Range) As Variant

Dim arr As Variant, i As Long, v As Variant

arr = Split(vector, ";")

For i = LBound(arr) To UBound(arr)
    v = Application.Match(Val(arr(i)), r.Rows(1), 0)
    If IsNumeric(v) Then Matrix = Matrix + r(2, v)
Next i

End Function

C1中的公式是

=matrix(A1,A3:D4)

注意Split 返回一个数组。

【讨论】:

  • 是的。完全同意整个事情(拆分和匹配)应该是一个 UDF。
  • 我的荣幸。如果单元格不包含数字,您可能还需要构建一些错误检查。经过反思,您可以在此处使用 HLOOKUP。
猜你喜欢
  • 1970-01-01
  • 2022-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 2011-03-18
相关资源
最近更新 更多