【问题标题】:Return list of integers between two cells返回两个单元格之间的整数列表
【发布时间】:2018-05-01 17:21:23
【问题描述】:

我希望公式或 vba 函数可以在给定上限和下限的情况下将值列表添加到单元格。例如,参考下图中的 A 和 B 列:

我想生成一个公式或函数,它返回一个包含上限和下限以及介于两者之间的所有值的列表。有关所需输出,请参见上例中的 C 列。

问题在于两个单元格之间的范围不同(C 列中的输出并不总是包含 4 个整数 - 它可能或多或少)。

有谁知道完成这项任务的最佳方法是什么?我非常感谢任何和所有的帮助。

【问题讨论】:

  • 什么版本的 Excel?如果不是 Office365 或 Excel 2016,则需要使用 VBA 创建 UDF。
  • @tigeravatar 请参阅下面的帖子......我一直在尝试在 中使用 INDIRECT() TEXTJOIN(),但是没有运气。
  • @Gary'sStudent 也许=TEXTJOIN(",",TRUE,ROW(INDEX(A:A,A2):INDEX(A:A,B2))) ?
  • @tigeravatar 完美 ..........你应该发帖

标签: excel vba formula


【解决方案1】:

如果您使用的是 Office365 或 Excel 2016 及更高版本,则可以像这样使用 TextJoin 函数(使用 Ctrl+Shift+ 作为数组公式输入输入):

=TEXTJOIN(",",TRUE,ROW(INDEX(A:A,A2):INDEX(A:A,B2)))

否则,您需要使用 VBA 创建 UDF,如 Gary 的学生回答中所示。

【讨论】:

  • 应该提到它需要数组入口
  • @Gary'sStudent 是的,刚刚想到并更新了。
【解决方案2】:

使用 VBA:

Public Function Seq(n1 As Long, n2 As Long) As String
    For i = n1 To n2
        Seq = Seq & "," & i
    Next i
    Seq = Mid(Seq, 2)
End Function

编辑#1:

在最新版本的 Excel 中,这个数组公式:

=TEXTJOIN(",",TRUE,ROW(1:5))

将返回一系列值:

也许一个非常聪明的人可以告诉我们如何将 1:5 替换为单元格引用。

【讨论】:

  • 我认为是这样,但遗憾的是没有足够新版本的 Excel 无法测试它 =TEXTJOIN(",",TRUE,ROW(INDEX(A:A,A1):INDEX(A :A,B1)))
  • @TomSharpe 谢谢!......该方法有效.......我愚蠢地不断尝试变化间接()
  • 谢谢 - 这也应该有效(在 Google 表格中测试过)=ArrayFormula(TEXTJOIN(",",TRUE,ROW(INDIRECT(A1&":"&B1)))) 但其他人建议由于波动性,我反对在 Excel 中使用它。
  • @TomSharpe 再次感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多