VBA Excel - 使用子字符串获取买家

问题描述 投票:0回答:1

我正在编写VBA Excel代码,我需要从以下交易中提取买家。

交易示例

  1. 彼得向五月出售 10 个苹果
  2. 乔恩卖了 3 个梨给梁伟
  3. 汤姆卖给威廉 4 个橙子
  4. 艾伦卖 1 根香蕉给安迪

买家是谁

  1. 五月
  2. 魏良
  3. 威廉
  4. 安迪

我无法控制我收到的交易。 正如您所看到的,Number 3 格式有点不同。 唯一相似的是Buyer总是出现在“to”之后

Public Sub Populate_FullData()

Dim TransArray() As String
Dim i As Integer
Dim id As String
Dim pos As Integer

' Populate TranArray() with the 4 Transactions
....
'

For i = LBound(TransArray) To UBound(TransArray)
id = "to"
pos = InStr(TransArray, id)
**I am stuck here on how to continue**
End Sub

如有任何建议,我们将不胜感激

excel vba substring
1个回答
0
投票

我用

trim
(也许更简单)“尝试”来实现你所需要的,有一些限制,例如仅打印“to”后的第一个单词以识别买家,其中不包括全名,即对于(2),打印Wei而不是Weilian。但是,它允许启动,请参阅下面的代码片段和屏幕截图,希望它有所帮助。

Sub get_buyer()
    Dim rng As Range
    Dim cell As Range
    Dim transaction As String
    Dim buyer As String
    Dim startPos As Integer
    Dim endPos As Integer
    
    Set rng = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
    
    For Each cell In rng
        transaction = cell.Value
        
        startPos = InStr(1, transaction, "to")
        
        If startPos > 0 Then
            startPos = startPos + 3
            endPos = InStr(startPos, transaction, " ")
            
            If endPos > 0 Then
                buyer = Trim(Mid(transaction, startPos, endPos - startPos))
                cell.Offset(0, 1).Value = buyer
            End If
        End If
    Next cell
End Sub

交易备注在A栏,请相应修改。

结果看起来像,

© www.soinside.com 2019 - 2024. All rights reserved.