首页 > 解决方案 > 试图从单元格中提取所需的字符串

问题描述

我正在尝试从单元格中可用的数据中提取字符串,"A2"并且"A5".

从细胞"A2"Young, Yamen (09/21/1960 M)

从细胞"A5"

Insurance: CHIP(U4024563201)   Location:  (Far Rockaway)   Type: Radiology - Results Follow-up

在此处输入图像描述

我想从上面的数据中提取以下这些细节

Young, Yamen in B2
9/21/1960 in C2 
CHIP in D2  
U4024563201 in E2

在此处输入图像描述

但是当我运行代码时,详细信息如下所示: 在此处输入图像描述

Dim ws As Worksheet
Dim val As String
Dim val2 As String
Set ws = Sheet1

val = ws.Range("A2")
val2 = ws.Range("A5")
On Error Resume Next

ws.Range("B2") = Split(val, "(")(0)
ws.Range("C2") = Right(val, Len(val) - (InStrRev(val, "(")))
ws.Range("D2") = Left(val2, Len(val2) - (InStrRev(val2, ":")))
ws.Range("E2") = Left(val2, Len(val2) - (InStrRev(val2, ")")))

任何帮助将不胜感激。

标签: excelvba

解决方案


Left我认为您对and功能有一些问题Right
您可以结合使用它们来挑选一个部分,或使用Mid函数。
我不确定您的格式是否一致,但这里有一个应该适用于当前示例的示例:

ws.Range("B2") = Split(val, "(")(0)
ws.Range("C2") = Left(Right(val, Len(val) - (InStrRev(val, "("))), 10)
ws.Range("D2") = Mid(val2, InStr(val2, ":") + 2, InStr(val2, "(") - InStr(val2, ":") - 2)
ws.Range("E2") = Mid(val2, InStr(val2, "(") + 1, InStr(val2, ")") - InStr(val2, "(") - 1)

推荐阅读