Alright, this is a very specific question. I have an excel macro written that takes a web URL, delimits it, transposes it, and then adds adjacent columns that describe the information in the originally transposed columns. Now, I need to add something to my macro that will loop through and check if the first character of one cell matches one of the first 4 characters of another cell. If it does, I need to concatenate strings from the descriptive columns to new cells. I'll illustrate this below:
3,435,201,0.5,%22type%25202%2520diabetes%22,0   Node    type 2 diabetes
4,165,97,0.5,%22diet%22,0                       Node    diet
5,149,248,0.5,%22lack%2520of%2520exercise%22,2  Node    lack of exercise
6,289,329,0.5,%22genetics%22,3                  Node    genetics
7,300,71,0.5,%22blood%2520pressure%2520%22,5    Node    blood pressure 
7,3,-7,1,0                                      Arrow   +
4,3,-21,1,0                                     Arrow   +
5,3,-22,1,0                                     Arrow   +
6,3,-34,1,0                                     Arrow   +
,7%5D                                           Tail     
I added color to make the concept of the problem more easily visualized. In row one of the first column, we see a red 3 that corresponds to 'type 2 diabetes'. In the fifth row of the first column, we see a blue 7 that corresponds to 'blood pressure'. These are both node objects, as the adjacent column signifies. In the sixth cell of the first column we see a blue 7 and a red 3. This indicates that an arrow (also signified by adjacent column) is connecting blood pressure to diabetes. In the next column over, we see an orange plus sign, which indicates this is a positive relationship.
The goal is to populate the next column over with "blood pressure + type diabetes", as I demonstrated in the image. So, I need some code to check the first characters in each node cell, and then compare them to the first 4 characters of each arrow cell. When an arrow that matches two of the nodes is found, I need the code to populate the row next to the + signs with a concatenated string comprised of the names of the nodes pertaining to that arrow, as well as the + sign between them (it's possible that it could also be a minus sign, but one isn't present in this example). Any pointers? I can't wrap my head around this. Edited to add Data
Here is the code of my current macro:
Sub Delimit_Transpose()
    
    Cells.Replace What:="],[", Replacement:="@", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    
    ActiveCell.FormulaR1C1 = "=RIGHT(R[-1]C,LEN(R[-1]C)-36)"
    
    Dim i As Long, strTxt As String
    Dim startP As Range
    Dim xRg As Range, yRg As Range
    On Error Resume Next
    Set xRg = Application.InputBox _
    (Prompt:="Range Selection...", _
    Title:="Delimit Transpose", Type:=8)
    i = 1
    Application.ScreenUpdating = False
    For Each yRg In xRg
        If i = 1 Then
            strTxt = yRg.Text
            i = 2
        Else
            strTxt = strTxt & "," & yRg.Text
        End If
    Next
    Application.ScreenUpdating = True
    Set startP = Application.InputBox _
    (Prompt:="Paste Range...", _
    Title:="Delimit Transpose", Type:=8)
    ary = Split(strTxt, "@")
    i = 1
    Application.ScreenUpdating = False
    For Each a In ary
        startP(i, 1).Value = Replace(Replace(a, "[", ""), "]", "")
        i = i + 1
    Next a
    
    i = 1
    For Each a In ary
       If Len(a) > 13 Then
           startP.Offset(i - 1, 1).Value = "Node"
        ElseIf Len(a) < 13 And Len(a) > 6 Then
            startP.Offset(i - 1, 1).Value = "Arrow"
        Else
            startP.Offset(i - 1, 1).Value = "Tail"
        End If
        i = i + 1
    Next a
    Dim openPos As Integer
    Dim closePos As Integer
    Dim midBit As String
    
    i = 1
    n = 5
    For Each a In ary
    openPos = InStr(a, ",%22")
     On Error Resume Next
    closePos = InStr(a, "%22,")
     On Error Resume Next
    midBit = Mid(a, openPos + 1, closePos - openPos - 1)
     On Error Resume Next
        If openPos <> 0 And Len(midBit) > 0 Then
            startP.Offset(i - 1, 2).Value = Replace(Replace(midBit, "%22", ""), "%2520", " ")
        ElseIf Len(a) < 13 And InStr(a, "-") = 4 Then
            startP.Offset(i - 1, 2).Value = "'-"
        ElseIf Len(a) < 7 Then
            startP.Offset(i - 1, 2).Value = " "
        Else
            startP.Offset(i - 1, 2).Value = "+"
        End If
        i = i + 1
        n = n + 1
    Next a
    Application.ScreenUpdating = True
End Sub

 
     
    
