如何在excel中按域合并数据?

时间:2010-09-15 19:30:04

标签: excel vba excel-vba

我有一个看起来像这样的电子表格:

Referrer --- Clicks --- Conversions
http://google.com/search?q=hello+world ---- 12 ---- 3
http://george.com ---- 4 ---- 1
http://google.com/search?q=yeah ----- 3 ---- 3
http://george.com/2010/3/this-blog ----- 4 ---- 0
http://www.wave-runner.com/hey ---- 3 ---- 0

如何编写一个可以合并它的宏:

http://google.com/ ---- 15 ---- 6
http://george.com ---- 8 ---- 1
http://www.wave-runner.com/hey ---- 3 ---- 0

2 个答案:

答案 0 :(得分:3)

我不知道那些破折号是什么,但我会假设他们是破洞。创建另一列并将其称为域。把这个公式放在里面。

=IF(ISERR(FIND("/",A2,FIND("//",A2)+2)),MID(A2,FIND("//",A2)+2,LEN(A2)),MID(A2,FIND("//",A2)+2,FIND("/",A2,FIND("//",A2)+2)-FIND("//",A2)-2))

然后在行字段中使用Domain并在数据字段中执行Clicks和Conversions。如果这些破折号真的是破折号,你可以先做一个数据 - 文本到列,然后将它们拆分成列。

答案 1 :(得分:0)

也许:

Dim cn As Object
Dim rs As Object
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim s As String
Dim i As Integer, j As Integer

    ''This is not the best way to refer to the workbook
    ''you want, but it is very convenient for notes
    ''It is probably best to use the name of the workbook.

    strFile = ActiveWorkbook.FullName

    ''Note that if HDR=No, F1,F2 etc are used for column names,
    ''if HDR=Yes, the names in the first row of the range
    ''can be used.
    ''This is the Jet 4 connection string, you can get more
    ''here : http://www.connectionstrings.com/excel

    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
        & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"

    ''Late binding, so no reference is needed

    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")


    cn.Open strCon

    strSQL = "SELECT Mid(Referrer & '/',1,Instr(8,Referrer & '/','/')), " _
           & "Sum([Clicks]) As SumClks, Sum([Conversions]) As SumConv " _
           & "FROM [Sheet2$] a " _
           & "GROUP BY Mid(Referrer & '/',1,Instr(8,Referrer & '/','/')) "

    rs.Open strSQL, cn, 3, 3

    Worksheets("Sheet3").Cells(2, 1).CopyFromRecordset rs