返回列表 上一主題 發帖

判斷式

本帖最後由 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

底下紅色字體是我增加的,其餘我是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

回復 7# jackdream


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

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

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

TOP

我看不太懂你給的問題.

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

TOP

回復 4# jackdream


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

TOP

回復 4# jackdream


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

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

回復 2# jackdream

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

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

TOP

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

TOP

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

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

TOP

        靜思自在 : 【是否發揮了良能?】人間壽命因為短暫,才更顯得珍貴。難得來一趟人間,應問是否為人間發揮了自己的良能,而不要一味求長壽。
返回列表 上一主題