+ Reply to Thread
Results 1 to 7 of 7

Macro idendifying keywords

  1. #1
    Registered User
    Join Date
    03-14-2006
    Posts
    23

    Macro idendifying keywords

    Excel gurus...

    I have a spreadsheet that in Column C has descriptive data all in text form. The data might say something like "Paul is an Italian basketball player."

    What I need is for a macro to recognize the word "Italian" and place the word "Italy" in Column E to the right of the data column. Then I'd like to have another macro to recognize "basketball" and place "basketball" in Column F.

    However, sometimes there won't be information for Column E, in which case the data in Column F needs to move over to Column E if E is blank.

    And it needs to run for the entire set of rows.

    Is this possible? Many thanks in advance.

    Sandeman

  2. #2
    Tom Ogilvy
    Guest

    RE: Macro idendifying keywords

    Sub ProcessWords()
    Dim v as Variant, v1 as Variant
    Dim rng as Range, cell as Range
    Dim i as Long, col as long
    v = Array("Italian","BasketBall")
    v1 = Array("Italy","BasketBall)
    set rng = Range(Cells(1,3),Cells(rows.count,3).End(xlup))
    for each cell in rng
    col = 4
    for i = lbound(v) to ubound(v)
    if Instr(1,cell.Value,v(i).vbTextCompare) then
    cells(cell.row,col).Value = v1(i)
    col = col + 1
    end if
    Next
    Next
    End Sub

    Modify v to include all the key words and v1 to include the words you want
    placed to the right if a keyword is found

    Code is untested and may contain typos, but should suggest a workable approach

    --
    Regards,
    Tom Ogilvy



    "Sandeman" wrote:

    >
    > Excel gurus...
    >
    > I have a spreadsheet that in Column C has descriptive data all in text
    > form. The data might say something like "Paul is an Italian basketball
    > player."
    >
    > What I need is for a macro to recognize the word "Italian" and place
    > the word "Italy" in Column E to the right of the data column. Then I'd
    > like to have another macro to recognize "basketball" and place
    > "basketball" in Column F.
    >
    > However, sometimes there won't be information for Column E, in which
    > case the data in Column F needs to move over to Column E if E is blank.
    >
    >
    > And it needs to run for the entire set of rows.
    >
    > Is this possible? Many thanks in advance.
    >
    > Sandeman
    >
    >
    > --
    > Sandeman
    > ------------------------------------------------------------------------
    > Sandeman's Profile: http://www.excelforum.com/member.php...o&userid=32440
    > View this thread: http://www.excelforum.com/showthread...hreadid=522153
    >
    >


  3. #3
    Registered User
    Join Date
    03-14-2006
    Posts
    23
    Very cool Tom. Thank you. The If, Then line is not working out and I'm not sure what's wrong with it. Any ideas?

    Quote Originally Posted by Tom Ogilvy
    Sub ProcessWords()
    Dim v as Variant, v1 as Variant
    Dim rng as Range, cell as Range
    Dim i as Long, col as long
    v = Array("Italian","BasketBall")
    v1 = Array("Italy","BasketBall)
    set rng = Range(Cells(1,3),Cells(rows.count,3).End(xlup))
    for each cell in rng
    col = 4
    for i = lbound(v) to ubound(v)
    if Instr(1,cell.Value,v(i).vbTextCompare) then
    cells(cell.row,col).Value = v1(i)
    col = col + 1
    end if
    Next
    Next
    End Sub

    Modify v to include all the key words and v1 to include the words you want
    placed to the right if a keyword is found

    Code is untested and may contain typos, but should suggest a workable approach

    --
    Regards,
    Tom Ogilvy



    "Sandeman" wrote:

    >
    > Excel gurus...
    >
    > I have a spreadsheet that in Column C has descriptive data all in text
    > form. The data might say something like "Paul is an Italian basketball
    > player."
    >
    > What I need is for a macro to recognize the word "Italian" and place
    > the word "Italy" in Column E to the right of the data column. Then I'd
    > like to have another macro to recognize "basketball" and place
    > "basketball" in Column F.
    >
    > However, sometimes there won't be information for Column E, in which
    > case the data in Column F needs to move over to Column E if E is blank.
    >
    >
    > And it needs to run for the entire set of rows.
    >
    > Is this possible? Many thanks in advance.
    >
    > Sandeman
    >
    >
    > --
    > Sandeman
    > ------------------------------------------------------------------------
    > Sandeman's Profile: http://www.excelforum.com/member.php...o&userid=32440
    > View this thread: http://www.excelforum.com/showthread...hreadid=522153
    >
    >

  4. #4
    Tom Ogilvy
    Guest

    Re: Macro idendifying keywords

    As I said, it my contain typos - in this case, it contained two. Here is a
    tested version (based on your description).

    Sub ProcessWords()
    Dim v As Variant, v1 As Variant
    Dim rng As Range, cell As Range
    Dim i As Long, col As Long
    v = Array("Italian", "BasketBall")
    v1 = Array("Italy", "BasketBall")
    Set rng = Range(Cells(1, 3), _
    Cells(Rows.Count, 3).End(xlUp))
    For Each cell In rng
    col = 4
    For i = LBound(v) To UBound(v)
    If InStr(1, cell.Value, v(i), _
    vbTextCompare) Then
    Cells(cell.Row, col).Value = v1(i)
    col = col + 1
    End If
    Next
    Next
    End Sub

    "Sandeman" wrote:

    >
    > Very cool Tom. Thank you. The If, Then line is not working out and I'm
    > not sure what's wrong with it. Any ideas?
    >
    >


  5. #5
    Registered User
    Join Date
    03-14-2006
    Posts
    23
    Super. How you and others acquire this expertise, I'll never know. This is working very well. Now I've run into an unforeseen issue. If in the description I search for the word "Italian," the word Italy is placed in a cell to the right. If I also look for the word "Italy," the word Italy is then placed two cells to the right. That means "Italy" has been listed twice. Would it be possible to add code that states if "Italy" has been found once, skip the next variations of the word "Italy" and move on to the next group (e.g. basketball)? There should be come work around perhaps?

    Quote Originally Posted by Tom Ogilvy
    As I said, it my contain typos - in this case, it contained two. Here is a
    tested version (based on your description).

    Sub ProcessWords()
    Dim v As Variant, v1 As Variant
    Dim rng As Range, cell As Range
    Dim i As Long, col As Long
    v = Array("Italian", "BasketBall")
    v1 = Array("Italy", "BasketBall")
    Set rng = Range(Cells(1, 3), _
    Cells(Rows.Count, 3).End(xlUp))
    For Each cell In rng
    col = 4
    For i = LBound(v) To UBound(v)
    If InStr(1, cell.Value, v(i), _
    vbTextCompare) Then
    Cells(cell.Row, col).Value = v1(i)
    col = col + 1
    End If
    Next
    Next
    End Sub

    "Sandeman" wrote:

    >
    > Very cool Tom. Thank you. The If, Then line is not working out and I'm
    > not sure what's wrong with it. Any ideas?
    >
    >

  6. #6
    Registered User
    Join Date
    03-14-2006
    Posts
    23
    Looks as if I need to make some changes to the macro structure. What I need the following macro to do is the following. If the macro looks at a description and identifies the word "Italian", it places the word "Italy" in a cell three columns over (column is "nation"). If it also identifies the word "basketball," it places the word "Basketball" in a cell four columns over (column is for "sport"). There are multiple identifiers I want to use, but I can set that up as long as I get the gist on how to edit the following to do this. Thanks!

    Sub ProcessWords()
    Dim v As Variant, v1 As Variant
    Dim rng As Range, cell As Range
    Dim i As Long, col As Long
    v = Array("Italian", "BasketBall")
    v1 = Array("Italy", "BasketBall")
    Set rng = Range(Cells(1, 3), _
    Cells(Rows.Count, 3).End(xlUp))
    For Each cell In rng
    col = 4
    For i = LBound(v) To UBound(v)
    If InStr(1, cell.Value, v(i), _
    vbTextCompare) Then
    Cells(cell.Row, col).Value = v1(i)
    col = col + 1
    End If
    Next
    Next
    End Sub

  7. #7
    Registered User
    Join Date
    03-14-2006
    Posts
    23
    I have solved the problem.
    Last edited by Sandeman; 03-30-2006 at 04:11 AM.

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1