【问题标题】:Pull Site Code from Location Name (VBA)从位置名称 (VBA) 中提取站点代码
【发布时间】:2015-08-08 02:22:56
【问题描述】:

所以我有一个客户需要一个与每个位置的名称隔离的特定代码。我有以下公式,我一直在手动编辑,但想知道是否有办法让它计算单元格中的字符并将代码拉到新单元格。

示例位置名称:MRI-LENOX HILL RADIOLOGY 150/14101

=RIGHT(A1,FIND("/",A1)-19)

代码格式为0123/01234(斜杠前3-4个字符,后5个)

在这方面的任何帮助将不胜感激。

谢谢,

贾斯汀·海姆斯

【问题讨论】:

  • 总是3/5吗?你可以做 =Right(A1, 9)
  • 我刚刚意识到有些代码在斜杠前有 4 位数字,但如果我要用户 =Right(A1,10) 这会工作吗?在我尝试提取的代码之前总是有一个空格。
  • 如果只有四个,有时 9 仍然可以工作。如果有五个,它将获取代码,如果有四个,它将获取空格和代码。您可以使用 =trim(Right(A1, 9)) 来取消空间。

标签: vba excel


【解决方案1】:

您可以使用正则表达式从单元格值中查找和提取代码。例如:

With CreateObject("VBScript.RegExp")
    .Pattern = "\d{3,4}/\d{5}"
    If .Test(Range("A1")) Then
        Range("B1") = .Execute(Range("A1"))(0)
    End If
End With

这将从A1 中提取代码并将其放入B1

编辑,关于 cmets:

在一系列单元格上运行:

Dim re
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "\d{3,4}/\d{5}"

Dim r As Range
For Each r In Range("A1:A100")
    If re.Test(r) Then r.Offset(0, 1) = re.Execute(r)(0)
Next

【讨论】:

  • 我也会试试这个,谢谢你的快速回复! :)
  • 如果字符串末尾有空格或其他字符会影响字符数,应该更可靠一些。如果您只想在公式中使用它,您甚至可以将其包装到自定义工作表函数中。
  • 嗯由于某种原因它不会运行脚本。关于为什么的任何想法? Sub Insert() With CreateObject("VBScript.RegExp") .Pattern = "\d{3,4}/\d{5}" If .test(Range("A12")) Then Range("B12") = .Execute(Range("A12"))(0) End If End With End Sub
  • 只需将其粘贴到工作表中的Sub(随便你怎么称呼)即可。这就是你正在尝试的吗?
  • 是的,我将它粘贴到一个 sub 中并单击运行,但似乎没有任何反应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
  • 2010-12-11
  • 1970-01-01
相关资源
最近更新 更多