【发布时间】:2018-08-15 00:05:15
【问题描述】:
问题:我有一列,其中每个单元格都有不同的长度和不同的句子结构。如果任何单元格的长度超过 1000 个字符,则在字符串中第 998 个字符的右侧找到第一次出现的 [句点]、[逗号]、[分号]、[冒号]并将该字符替换为 [3 个句点](应用程序替代省略号)。最后在 3 个句点之后截断所有剩余的文本。
例子-
当前数据: [[900 个以前的字符]]。 Visual Basic for Applications 支持构建用户定义的函数 (UDF)、自动化流程以及通过动态链接库 (DLL) 访问 Windows API 和其他低级功能。
预期输出: [[900 个以前的字符]]。 Visual Basic for Applications 支持构建用户定义的函数 (UDF)...
在“当前数据”中,长度 = 1098 个字符。第 998 个字符是 "procesS" 中的第二个 's'。右边第一次出现的所需标点符号是(UDF)之后的[逗号]。替换为 [3 个句点] 并删除字符串的其余部分。
目前这就是我所拥有的。我还没有想出如何包含各种条件来查找或如何在 3 个句点之后截断文本。此外,可能有一种更清洁的方式来完成所有这些操作。
For i = 2 To LR
If Len(Cells(i, 2).Value) > 1000 Then
Cells(i, 2).Value = Left(Cells(i, 2), 998)
Cells(i, 2).Value = StrReverse(Replace(StrReverse(Cells(i, 2).Value), StrReverse("."), StrReverse("..."), Count:=1))
End If
Next i
希望我已经提供了大量关于我正在尝试的信息。
【问题讨论】:
标签: string excel replace string-length vba