首页 > 解决方案 > Excel VBA - 从文本文件中搜索和导入多个嵌套字符串

问题描述

我正在尝试从 json 数据文本文件中提取一些字符串。问题是我需要的信息不在唯一的标题下并且是嵌套的。从下面的示例中可以看出,每个块大小都有 3 个 iothroughput 数字。我该如何检索它们?我可以搜索一个字符串并返回一个行号,但我无法始终如一地获得正确的数据及其相应的块大小。

块大小:16kb
初始:
iothroughput:500
覆盖:
iothroughput:1000
读取:
iothroughput:2000
块大小:64MB
初始:
iothroughput:10
覆盖:
iothroughput:20
读取:
iothroughput:30

到目前为止,我有以下搜索字符串并返回该行的内容。然后我想在该点开始另一次搜索“initial”,返回该行号,然后搜索“iothroughput”并将该值拉入一个单元格。

Sub Import_File()

MsgBox ("Please Insert Data Contention File")

myFile = Application.GetOpenFilename()

Open myFile For Input As #1

Do Until EOF(1)

    Line Input #1, textline

    Text = Text & textline

Dim Ctr, Ctr2, Str

Ctr = Ctr + 1

   Str = 16777216

   If textline Like "*" & "" & Str & "" & "*" Then

        Ctr2 = Ctr

        Range("E4").Value = Ctr2

   End If

Loop

Close #1

标签: excelvbaimport

解决方案


如果该数据在 A 列中,您可以做的一件事就是这个笨拙的IF()声明。在“blocksize:”旁边的一个单元格中放入一个单元格并向下拖动:

=IF(LEFT(A1,LEN("blocksize:"))="blocksize:",SUBSTITUTE(A3,"iothroughput:","")&", "&SUBSTITUTE(A5,"iothroughput:","")&", "&SUBSTITUTE(A7,"iothroughput:",""),"")

在此处输入图像描述

注意:这是一个“愚蠢”的公式,并假设您恰好有三个iothroughput数字,blocksize并且模式不会改变。


推荐阅读