How to group excel items based on custom rules?

后端 未结 3 1868
感动是毒
感动是毒 2021-01-19 16:39

I have a set of data (webmaster tools search queries) which is in excel with the following header:

Query | Impressions | Clicks | Date

Sample go

相关标签:
3条回答
  • 2021-01-19 16:51

    This small macro assumes your data is in Sheet1 and your rules are in worksheet rules in columns A & B:

    Sub catagorize()
        Dim s1 As Worksheet, s2 As Worksheet
        Dim N1 As Long, N2 As Long
        Set s1 = Sheets("Sheet1")
        Set s2 = Sheets("rules")
        N1 = s1.Cells(Rows.Count, "A").End(xlUp).Row
        N2 = s2.Cells(Rows.Count, "A").End(xlUp).Row
        For i = 2 To N1
            v = s1.Cells(i, 1).Value
            For j = 1 To N2
                If InStr(1, v, s2.Cells(j, 1).Value) > 0 Then
                    s1.Cells(i, "D").Value = s2.Cells(j, "B").Value
                End If
            Next j
        Next i
    End Sub
    
    0 讨论(0)
  • 2021-01-19 17:06

    And for a 3rd option, you could use a custom formula.

    I created a table just for categories on a separate sheet, then inserted the following code in a standard module.

    Option Explicit
    
    Function CategoryLookup(s_Query As String, Keyword_tbl As Range)
        Dim rngKeywords As Range
        Dim s_foundCategory As String
        Dim b_CategoryExists As Boolean
        b_CategoryExists = False
    
        For Each rngKeywords In Keyword_tbl
            If InStr(s_Query, rngKeywords.Value) <> 0 Then
                s_foundCategory = rngKeywords.Offset(0, 1).Value
                b_CategoryExists = True
                Exit For
            End If
        Next rngKeywords
    
        If b_CategoryExists = True Then
            CategoryLookup = s_foundCategory
        Else
            CategoryLookup = "Other"
        End If
    End Function
    

    Then in D2 (your category column) insert the following formula (which can then be dragged down)

    =CategoryLookup(A2,categories!$A$2:$A$5)
    
    0 讨论(0)
  • 2021-01-19 17:13

    Ok, I changed your sheet a bit....

    Supposing all your data was in cells A1:C9, then you had the following table in cells F1:G5

    Search_For:    Category:
    laptop         Laptop
    iphone         Phone
    galaxy         Phone
    notebook       Laptop
    

    Now, in cell D2, put in the following formula:

    =IFERROR(INDEX(G$2:G$5,MATCH(TRUE,ISNUMBER(SEARCH(F$2:F$5,A2)),0)),"other")
    

    And enter it as an array formula Meaning, once you enter it, hit CTRL+SHIFT+ENTER.

    You can then drag the formula from cell D2 down and it should give you the desired results (and you can, of course, increase the list in columns F & G as necessary).

    Hope this does the trick!!

    0 讨论(0)
提交回复
热议问题