2010-09-15 13 views
0

我有一個等試算表看起來是這樣的:如何在Excel中按域進行數據整合?

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 
+0

合併的標準是什麼?在兩種情況下,您已合併到頂級域名(http://google.com),但在最後一種情況下,您已合併到該域中的某個目錄(http://www.wave-runner.com/嘿)。 – KevenDenen 2010-09-15 20:30:52

+0

好問題。我只想鞏固到頂級域名。 – 2010-09-16 01:20:58

回答

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 
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)) 

然後做一個數據透視表使用域的行字段和點擊和轉化的數據字段。如果這些破折號確實是破折號,那麼可以執行「數據 - 文本到列」以先將它們分成列。

相關問題