繁体   English   中英

VBA Excel:如何读取单元格中可变长度的某些部分

[英]VBA Excel: How to read certain parts of variable length in a cell

因此,这里是编程初学者。

我需要从数据库中提取一些信息。 即,我需要与给数据库中每个日志的每个ID对应的“描述”。 数据库为我提供了我需要的数据,如下所示:一个excel工作表,其中对于数据库中的每个ID,它使用相应的数据填充第一列中的单元格。

看起来像这样(括号中的内容实际上不是数据的一部分):

(Cell A1:) ID, "Project>Project Name","Date","Duration","Person",(....),"Description","Date Updated", (and so on)

(Cell A2:) 12345, "VBAEXCELSTACKOVERFLOW123","2016-03-24","8hrs","j doe",(...),"finding a way to extract this sentence","2016-03-24 10:05:43", (and so on)

(Cell A3:) 12346, "VBAEXCELSTACKOVERFLOW123","2016-03-24","6hrs","w smith",(...),"i need this one too","2016-03-24 10:06:20", (and so on)

(Cell A4:) (....)

我需要获取每个单元格的描述部分,并以某种方式保存它,使其仍然与ID相对应,以便我可以将其粘贴到另一个电子表格中,其中仅给出ID。

我认为最大的线索是描述部分始终是单元格中的第n个对象。 它总是出现:ID,“ ...”,“ ...”,“ ...”,“描述”,“ ...”。 唯一的是可变的,是括号中的实际内容。

因此,我想做的是制作一个数组或一个字典(或等效的VBA),该数组或字典保存对应于“单元格Ax括号中的第5个条目”的ID。

我不希望您收到万无一失的代码。 我只是需要一些从哪里开始的提示,因为我有点迷路。 谷歌给我的唯一一件事就是那些只计算一个单元格中单词的人。 但这当然不能解决我的问题。

提前谢谢你

您可以使用split(range(“ a1”)。value,“,”),这将使用逗号作为定界符为您提供行数组,然后id将在索引0中,然后您可以确定所需的内容,在示例中,您将添加索引0作为键,并添加索引4

类似(未经测试)

dim strSplit() as string
dim dicIDSandDesc as new scripting.dictionary

strSplit=split(range("a1").value,",")
dicIDSandDesc.add strSplit(0),strSplit(4)

尝试这个:

Sub Split_String()
    Dim WordArr() As String
    Dim txt As String
    CurrSheetRowCount = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
    For i = 2 To CurrSheetRowCount
        txt = Cells(i, 1).Value
        WordArr() = Split(txt, ",")
        Cells(i, 2).Value = WordArr(1)     'here 2 is the column number where id will be displyed
        Cells(i, 3).Value = WordArr(6)     'here 3 is the column number where description will be displyed
    Next i
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM