Copiare da un sito e incollare su un foglio Excel in modo corretto

Anonimo
2022-08-07T08:32:11+00:00

Esiste una funzione in excel oppure un modo alternativo al mio problema ?

come da foto allegata vi mostro che copiando da un sito questi dati , incollandoli sul mio foglio me li da incolonnati , esiste una funzione oppure un modo alternativo di averli sul mio foglio come sono stati copiati ?

Microsoft 365 e Office | Excel | Per la casa | Altro

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2022-08-11T17:55:47+00:00

Ciao Lupetto,

In effetti le partite Posticipate o Cancellate non devono essere presenti nella lista

Rigurdo alle partite completate o in corso NO devono restare , insieme a quelle che devono ancora iniziare che portano con se il loro orario di inizio .

Altra cosa importante che ho dimenticato di dirti e' la seguente : gli orari di inizio partite hanno tutte un'ora indietro rispetto al mio orario e non possono essere cambiati dal sito in questione , potresti magicamente aggiungere in automatico un'ora in piu' rispetto a loro ?

Questi giorni andavo molto di fretta e ho fatto un po di confusione , poco fa ho riflettuto bene sul tutto ed ecco la maschera finale di come dovrebbe essere fatta

Immaginesi notano due colonne in piu che vanno lasciate libere per altre cose che servono a me e sarebbero le colonne D - L

altro punto importante e' la colonna H , siccome dipende se si scaricano dati regressi oppure futuri , se sono regressi danno il risultato , se sono futuri danno orario e dobbiamo separarli come da colonne B e QR .

Riguardo ad altre variazioni rimane come detto in precedenza.

Ho modificato il codice al fine di abbracciare le modifiche da te indicate e la revisione della disposizione dei dati da te richiesta

Pertanto, sostituisci il mio codice precedente con la seguente versione:

'========>>

Option Explicit

'-------->>

Public Sub Tester()

Dim SH As Worksheet 

Dim Rng As Range 

Dim dTime As Double 

Dim sStr As String 

Dim sScore As String 

Dim sHome\_Team As String, sAway\_Team, m As String 

Dim sLega As String 

Dim vOdds\_Home As Variant, vOdds\_Draw As Variant, vOdds\_Away As Variant 

Dim vHome\_Rank As Variant, vAway\_Rank As Variant 

Dim arrSplit As Variant, arrRisultato() As Long 

Dim i As Long, j As Long, k As Long, iRiga As Long 

Dim iPos As Long, jPos As Long, kPos As Long, pPos As Long, qPos As Long, rPos As Long, sPos As Long 

Dim tempPos As Long 

Dim LRow As Long 

Dim bHome As Boolean, bRank As Boolean, bScore As Boolean, bTime As Boolean 

Const iRigs\_Intestazioni As Long = 3              '<<=== Modifica 

Set SH = ActiveSheet 

With SH 

    LRow = .Range("A" & .Rows.Count).End(xlUp).Row 

    Set Rng = SH.Range("A2:A" & LRow) 

End With 

iRiga = iRigs\_Intestazioni + 1 

ReDim arrRisultato(1 To 2) 

For k = 1 To Rng.Cells.Count 

    j = j + 1 

    If InStr(1, Rng.Cells(k + 1), "post", vbTextCompare) Then 

        k = k + 3 

        bHome = True 

        GoTo JumpMatch 

    End If 

    sStr = Rng.Cells(k).Text 

    With SH 

        Select Case True 

            Case Left(sStr, 3) = Space(3) '\\ Nuova Lega 

                sLega = Trim(sStr) 

                bHome = True 

            Case Left(sStr, 1) = "W", Left(sStr, 1) = "L", Left(sStr, 1) = "D"  '\\ Form 

                If bHome Then 

                    .Cells(iRiga, "E") = Trim(sStr) 

                    .Cells(iRiga, "C") = sLega 

                    bHome = False 

                Else 

                    .Cells(iRiga, "K") = Trim(sStr) 

                    bHome = True 

                End If 

            Case InStr(2, sStr, ".", vbTextCompare)         '\\ Odds 

                pPos = InStr(2, sStr, ".", vbTextCompare) 

                vOdds\_Home = Trim(Left(sStr, pPos + 2)) 

                qPos = InStr(pPos + 2, sStr, ".", vbTextCompare) 

                vOdds\_Draw = Trim(Mid(sStr, qPos - 1, 4)) 

                rPos = InStr(qPos + 1, sStr, ".", vbTextCompare) 

                vOdds\_Away = Mid(sStr, rPos - 1, 99) 

                vOdds\_Away = Left(vOdds\_Away, Len(vOdds\_Away) - 2) 

                .Cells(iRiga, "M").Resize(1, 3).Value = Array(vOdds\_Home, vOdds\_Draw, vOdds\_Away) 

                iRiga = iRiga + 1 

                If j < Rng.Cells.Count Then 

                End If 

                bHome = True 

            Case InStr(1, sStr, "post", vbTextCompare) 

                If iRiga = 25 Then Stop 

            Case Left(sStr, 4) = " ---" '\\ No Odds 

                .Cells(iRiga, "L").Resize(1, 3).Value = "-" 

                iRiga = iRiga + 1 

                bHome = True 

                .Cells(iRiga, "C") = sLega 

            Case Left(sStr, 1) = Space(1), Left(sStr, 2) = Space(2)  '\\ iPos Score\Risultato iPos 

                sStr = Trim(sStr) 

                If Left(sStr, 2) Like "##" Then 

                    vHome\_Rank = Left(sStr, 2) 

                    bRank = True 

                    iPos = 4 

                ElseIf IsNumeric(Left(sStr, 1)) Then 

                    vHome\_Rank = Left(sStr, 1) 

                    iPos = 3 

                    bRank = True 

                Else 

                    iPos = 1 

                End If 

                .Cells(iRiga, "F") = vHome\_Rank 

                vHome\_Rank = "" 

                If InStr(1, sStr, ":") Then 

                    jPos = InStr(1, sStr, ":") - 3 

                    sPos = 2 

                Else 

                    tempPos = InStr(1, sStr, "-") 

                    If IsNumeric(Mid(sStr, tempPos + 1, 1)) Then 

                        jPos = InStr(sStr, "-") - 2 

                        bScore = True 

                    Else 

                        jPos = InStr(tempPos + 1, sStr, "-") 

                        bScore = IsNumeric(Mid(sStr, jPos + 1, 1)) 

                        jPos = jPos - 2 

                    End If 

                End If 

                If InStr(1, Mid(sStr, jPos + 1, 3 + sPos), "-", vbTextCompare) Then 

                    sScore = Mid(sStr, jPos + 1, 3 + sPos) 

                    bScore = True 

                    arrSplit = Split(sScore, "-") 

                    For i = 0 To 1 

                        arrRisultato(i + 1) = CLng(arrSplit(i)) 

                    Next i 

                ElseIf InStr(1, Mid(sStr, jPos + 1, 3 + sPos), ":", vbTextCompare) Then 

                    bTime = True 

                    dTime = TimeValue(Mid(sStr, jPos + 1, 3 + sPos)) + 1 / 24 

                End If 

                If CBool(jPos) Then 

                    sHome\_Team = Trim(Mid(sStr, Application.Max(iPos, 1), jPos - iPos)) 

                    kPos = iPos + Len(sHome\_Team) + 5 

                Else 

                    jPos = InStr(sStr, ":") 

                    If CBool(jPos) Then 

                        sHome\_Team = Mid(sStr, iPos, jPos - 2 - iPos) 

                    End If 

                    kPos = iPos + Len(sHome\_Team) + 7 

                End If 

                .Cells(iRiga, "G") = sHome\_Team 

                If IsNumeric(Right(sStr, 2)) Then 

                    vAway\_Rank = Right(sStr, 2) 

                    bRank = True 

                ElseIf IsNumeric(Right(sStr, 1)) Then 

                    vAway\_Rank = Right(sStr, 1) 

                    bRank = True 

                End If 

                sAway\_Team = Mid(sStr, kPos + sPos, 99) 

                If bRank Then 

                    sAway\_Team = Left(sAway\_Team, InStrRev(sAway\_Team, " ") - 1) 

                    bRank = False 

                End If 

                .Cells(iRiga, "I") = sAway\_Team 

                .Cells(iRiga, "J") = vAway\_Rank 

                If bTime Then 

                    .Cells(iRiga, "H") = dTime 

                End If 

                If bScore Then 

                    .Cells(iRiga, "Q").Resize(1, 2).Value = arrRisultato 

                End If 

                vAway\_Rank = "" 

                iPos = 0 

                jPos = 0 

                sPos = 0 

                bScore = False 

                bTime = False 

        End Select 

    End With 

JumpMatch:

Next k 

End Sub

'<<========

Ho controllato questo codice, utilizzando i dati di martedì 9 agosto e ho ottento i seguenti risultati:

Ho quindi scaricato i dati di oggi, che comprendono 30 partite, di cui 8 posticipate. Eseguendo il codice rivisto, ottengo la seguente tabella:

Potresti scaricare il mio file di prova Lupetto202207811.xlsm

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

56 risposte aggiuntive

Ordina per: Più recente
  1. Anonimo
    2022-08-11T22:11:11+00:00

    Ciao Lupetto,

    Ricorderai che ti avevo avvertito che nuovi dati pubblicati sul sito web potrebbero creare ulteriori problemi e, da una rapida occhiata ai dati per le partite di domani, ho scoperto proprio un problema così appena apparso. Tuttavia, penso che la risoluzione di questo ulteriore problema possa attendere fino a quando non saremo in grado di superare le difficoltà che stai attualmente incontrando.

    ===

    Regards,

    Norman

    Immagine

    Ti spiego una cosa piu approfondita che potra' semplificare tutto .

    Io faccio il copia e incolla dal sito al tuo foglio , una volta che mi ha trasformato il tutto come tu hai fatto , copio nuovamente questa tabella e la vado ad incollare su un mio programma fatto di tante altre cose e di miei filtri personalizzati dopo di che non mi servono piu , se ne parla la mattina seguente di andare a fare la stessa operazione , quindi una sola volta al giorno , anche cambiasse qualcosa non ha importanza .

    ed ottengo questo :

    ( chiaramente ho coperto delle cose per non renderle publiche )

    se poi ti interessa e mi dai un tuo contatto privato te lo giro una volta ultimato il tutto perche' ultimi 10 giorni ho dovuto fare tutto manuale , roba da diventarci pazzo .

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2022-08-11T21:56:16+00:00

    Ciao Lupetto,

    Ricorderai che ti avevo avvertito che nuovi dati pubblicati sul sito web potrebbero creare ulteriori problemi e, da una rapida occhiata ai dati per le partite di domani, ho scoperto proprio un problema così appena apparso. Tuttavia, penso che la risoluzione di questo ulteriore problema possa attendere fino a quando non saremo in grado di superare le difficoltà che stai attualmente incontrando.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2022-08-11T21:55:07+00:00

    Ciao Lupetto,

    cancellato dati ( dopo eventualmente mettero' un pulsante Reset ) poi ho incollato i dati in A2 del foglio Martedi 9 agosto e non succede nulla.

    nel file che mi hai mandato, in basso a sinistra ci sono 3 cartelle : Martedi 9 agosto / Giovedi 11 agosto / Foglio 2 .

    Immagino che sul foglio 2 fai la manovra di atterraggio con i dati che hai copiato dal sito per poterli incollare come da procedura , poi si copiano da questo foglio e si vanno ad incollare in ( Martedi 9 agosto ) cella A2.

    Giusto ?

    Il foglio Foglio2 non ha uno scopo particolare; originariamente era inteso esclusivamente per fornirmi una versione statica dei dati acquisiti dal tuo sito web ieri.

    Prima di provare a scaricare qualsiasi dato, sfrutta invece i dati che ho già scaricato nella colonna A:

    Cancellare i dati nell'intervallo C4:R52

    Esegui la mia macro

    I dati cancellati verranno immediatamente sostituiti.

    Poi, quando questo avrà successo, poiché sono convinto che lo farà:

    • Elimina i dati nella colonna A,
    • Copia i dati del 9 agosto linguetta sul tuo sito web
    • Incolla i dati copiati nella colonna A del foglio Martedi 9 agosto,con l'intestazione nella cella A1, esattamente nello stesso modo in cui i miei dati scaricati sono stati incollati
    • Esegui nuovamente il codice

    Fammi sapere !!

    ===

    Regards,

    Norman

    Immagine

    ecco mi mancava un passaggio : come eseguire la tua macro ......... caro Norman qua in materia stiamo messi un po maluccio .

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2022-08-11T21:42:54+00:00

    Ciao Lupetto,

    cancellato dati ( dopo eventualmente mettero' un pulsante Reset ) poi ho incollato i dati in A2 del foglio Martedi 9 agosto e non succede nulla.

    nel file che mi hai mandato, in basso a sinistra ci sono 3 cartelle : Martedi 9 agosto / Giovedi 11 agosto / Foglio 2 .

    Immagino che sul foglio 2 fai la manovra di atterraggio con i dati che hai copiato dal sito per poterli incollare come da procedura , poi si copiano da questo foglio e si vanno ad incollare in ( Martedi 9 agosto ) cella A2.

    Giusto ?

    Il foglio Foglio2 non ha uno scopo particolare; originariamente era inteso esclusivamente per fornirmi una versione statica dei dati acquisiti dal tuo sito web ieri.

    Prima di provare a scaricare qualsiasi dato, sfrutta invece i dati che ho già scaricato nella colonna A:

    Cancellare i dati nell'intervallo C4:R52

    Esegui la mia macro

    I dati cancellati verranno immediatamente sostituiti.

    Poi, quando questo avrà successo, poiché sono convinto che lo farà:

    • Elimina i dati nella colonna A,
    • Copia i dati del 9 agosto linguetta sul tuo sito web
    • Incolla i dati copiati nella colonna A del foglio Martedi 9 agosto,con l'intestazione nella cella A1, esattamente nello stesso modo in cui i miei dati scaricati sono stati incollati
    • Esegui nuovamente il codice

    Fammi sapere !!

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento