从数据中提取所需的字符串 [英] Extracting the Required Strings from the Data

查看:24
本文介绍了从数据中提取所需的字符串的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试创建公式,以便从Col"A"中提供的数据中获取所需的字符串。不知何故,我设法创建了一些公式,但这些公式效率不高且工作正常,它们必须是动态的,因此我不会逐个编辑公式(就像我在所附工作表中所做的那样)。

数据(&Q;A&Q;)

我需要的数据结果

这是我的试用

任何帮助我们都将不胜感激。我创建的所有公式都可以在附页中找到,如果可以通过VBA创建,那么请。

Sheet Link

在VBA和公式中都尝试过,但无法执行此操作。

Sub ReturnString()

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("B28") = Split(val, "(")(0)
ws.Range("C28") = Right(val, Len(val) - (InStrRev(val, "(")))
ws.Range("D28") = Left(val2, Len(val2) - (InStrRev(val2, ":")))
ws.Range("E28") = Left(val2, Len(val2) - (InStrRev(val2, ")")))
End Sub

公式

=LEFT(A2,(FIND("(",A2,1)-1))
=MID(A2,FIND("(",A2,1)+1,10)
=MID(A5,FIND(":",A5)+1,256)
=MID(A5,FIND("(",A5,1)+1,11)

推荐答案

基本上,您可以使用other question中的答案。

我们需要做的是循环遍历您拥有的数据。 与往常一样,准确的格式设置很重要,有几种方法可以做到这一点。

一种方法:
首先,我们确定需要查看的区域,然后遍历该列并检查条件。我得出的结论是:&q;如果单元格中有内容,但前一行为空,则这是一个新人员&q;

建立后,我们需要运行格式化。我们使用已有的行(val)和下3行(val2)。
但我们还需要跟踪从哪里开始打印信息,并选择连续条目的下一行。我们将i变量用作计数器。

Sub extract()
Dim ws As Worksheet, workArea As Range, val As Variant, val2 As String, i As Long

Set ws = Worksheets(1)
Set workArea = ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
   'Notice that we start at A2, this is both because your data starts there,
   'but also because the below code will throw an error on row 1, since we use .offset(-1)
   'and this is the lazy workaround.

i = 3                                                'row to start printing
For Each val In workArea
    If Len(val) > 0 And Len(val.Offset(-1)) = 0 Then 'look for new entry
        val2 = val.Offset(3)                         'val2 is the Insurance row (3 down)
        
        ws.Range("B" & i) = Split(val, "(")(0)
        ws.Range("C" & i) = Left(Right(val, Len(val) - (InStrRev(val, "("))), 10)
        ws.Range("D" & i) = Mid(val2, InStr(val2, ":") + 2, InStr(val2, "(") - InStr(val2, ":") - 2)
        ws.Range("E" & i) = Mid(val2, InStr(val2, "(") + 1, InStr(val2, ")") - InStr(val2, "(") - 1)
        
        i = i + 1                                    'next entry on next row
    End If
Next val
End Sub

这篇关于从数据中提取所需的字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆