返回列表 上一主題 發帖

判斷式

抓取網站資料後,每筆擷取的資料"儲存格位置不一樣"

如附件,我有N筆選手網址,但是想擷取的"黃色儲存格部分"每一筆的儲存格位置都不一樣,該如何把它整理到"資料彙整"裡面呢?
能否請大大幫忙,順便附上說明! 謝謝
123.rar (136.14 KB)

TOP

參考看看...
用關鍵字,找尋所在的列位
Dim j As Integer
j = Columns("A").Find("Print", lookat:=xlPart).Row     '裡面的Print是要搜尋的關鍵字

TOP

回復 2# jackdream

123.rar (135.18 KB)
  大大  可是我要的資料(黃色部分)該如何搜尋關鍵字呢? 每一筆的資料都不一樣!

還有選手1他多了紅色框框的部分,可是選手2卻沒有(選手2黃色的部分也會自動往上移動),能否請大大再幫幫忙修改一下程式!謝謝!

TOP

一樣的方式,不過我沒研究網站抓下的格式,其餘的語法你再改變測試看看

例如要找選手1的資料,先找Prize Money,往下一列找到最後一欄

Dim j As Integer
Dim k As Integer
j = Cells.Find("Prize Money", lookat:=xlPart).Row     '找 Prize Money 列位
k = Cells(j + 1, 256).End(xlToLeft).Column                   '在Prize Money下一列,回傳最後一欄

TOP

回復 4# jackdream


    123.rar (135.18 KB) 大大不好意思,能否請您幫我看看程式 這段指令需要加在哪裡才是對的?謝謝您^^

TOP

回復 4# jackdream


    大大 可我兩位選手的資料位置都不一樣 是否要寫一個判斷式?如果是我該怎麼去編寫@@?

TOP

我看不太懂你給的問題.

這麼說吧,如果你是人工作業,你會怎麼抓對應的資料?
會找那些關鍵字?

TOP

回復 7# jackdream


   我有N比選手資料,可是選手有些有出現紅色框框的部分(例如選手一)
   但有些不會(例如選手二)

   我想把程式寫成判斷式如果是選手一的情況,那我就依照"PRIZEMONEY"的方式下去找他的下一格
   如果我是選手二的情況,那我就從"PRIZE MONEY"去找他右下那一個!

   現在我是卡在判斷式不知道該如何編寫? 請問能請大大幫忙嗎 謝謝!

TOP

底下紅色字體是我增加的,其餘我是copy你的程式沒做修改

Sub 巨集2()

On Error Resume Next   '表示當一個執行階段錯誤產生時,程式控制立刻到發生錯誤陳述式接下去的陳述式,而繼續執行下去
Dim myrng As Range
Dim myhyps As Hyperlinks
Dim myhyp As Hyperlink


Dim j As Integer
Dim k As Integer


'從網頁擷取資料
For n = 1 To 1
Sheets("擷取資料").Select
Cells.Select
    Selection.ClearContents
    Range("A1").Select
    '取出網頁路徑
    Set myrng = Sheets("選手網址").Cells(n + 1, 1)
    With myrng
    Set myhyps = .Hyperlinks
    Set myhyp = myhyps(1)
   
    End With

    'myhyp.Address變數可以直接用網址取代

    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;" & myhyp.Address _
        , Destination:=Range("$A$1"))
        .Name = "Novak-Djokovic_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
   

   j = Cells.Find("Prize Money", lookat:=xlPart).Row     '找 Prize Money 列位
    MsgBox Cells(j + 1, 6)      '如果資料固定在第六欄,就只需要上面那行和此行程式
   
    'k = Cells(j + 1, 256).End(xlToLeft).Column   '在Prize Money下一列,回傳最後一欄...如果資料不固定在第六欄,才需要改為此行程式

   
Next n
   
End Sub

TOP

本帖最後由 518587 於 2014-11-17 17:15 編輯

回復 9# jackdream


    謝謝大大的指導
    但是我還有一問題想請教您
    選手一的"PRIZE MONEY"那一欄是 2014  current的
    選手二的"PRIZE MONEY"那一欄是 career high的
    兩個是不一樣的,請問我該如何撰寫讓他判斷?

    整理後的資料我想如下這樣呈現,但是如果用大大的程式抓是否會不一樣呢?
   (我想呈現的)
   選手編號       2014  current-PRIZE MONEY                                      career high-PRIZE MONEY
     一                   $316,909(儲存格位置:F229)                                       $1,924,273(儲存格位置:F231)
     二                                                                                                            $152,766(儲存格位置:F227)

TOP

        靜思自在 : 太陽光大、父母恩大、君子量大,小人氣大。
返回列表 上一主題