【问题标题】:Calculating start and end index from a column of text in VBA从VBA中的一列文本计算开始和结束索引
【发布时间】:2019-03-28 06:42:02
【问题描述】:

我正在编写一个代码,它将获取 VBA 中文本的开始和结束索引。 此条件应用于单元格时应相应更改

这是一个计算单词长度的代码,但是卡在了索引部分, 我的 StartIndex 函数的输出总是 0。我想再做一个 EndIndex 函数

Public Function CountWords(ByVal strText As String) As Long
    Application.Volatile
    CountWords = UBound(Split(strText, " ")) + 1
End Function

Length = 1
StartIndex = 0

Public Function StartIndex(ByVal strText As String) As Long
    Application.Volatile
    StartIndex = Length + StartIndex
    Length = UBound(Split(strText, " ")) + 1
End Function

考虑这个例子,我有 col 1 并且想要生成 startIndexendIndex

          Col1                          startIndex               endIndex
VBA Index Printer Friendly version         1                        5
 Adobe Acrobat version                     6                        8
A UDF can remain in a code module          9                       15

【问题讨论】:

  • 你不能在方法之外有像Length = 1这样的语句。
  • 第二行要 1 和 3 吗?同样的,你想要 1 和 8 在第 3 行吗?
  • 不,看 col1 , startIndex, endIndex ...它显示了每个单词的索引位置,应该根据前一个单元格不断更新
  • 那么最后一个应该是16而不是15?
  • 是的,16,但你知道我该怎么做吗?我真的坚持下去了......

标签: excel vba user-defined-functions


【解决方案1】:

您可以使用以下简单设置来实现此结果。假设数据从单元格 A3 开始。

在单元格 B3 中插入​​硬编码值:1

在 B4 单元格中插入公式:=C3+1

在单元格 C3 中插入​​公式:=B3+(LEN($A3)-LEN(SUBSTITUTE($A3," ","")))

将单元格 B4 和 C3 中的公式复制到 A 列中数据的最后一行。

【讨论】:

  • 就我而言,B3 是我的 startIndex 列吗? C2 我的结束索引列? B2 是什么?
  • 注意:我默认有文本数据,只需要生成开始和结束索引
  • @andro 我已经编辑了我的回复。尝试按照步骤操作并检查结果。
  • 不写公式和进行运算,我们不能把它转换成VGA函数吗
  • ++ 我在草稿中有相同的答案...准备发布...大声笑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多