Condividi:        

caricare degli intervalli non consecutivi

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

caricare degli intervalli non consecutivi

Postdi papiriof » 26/04/22 09:34

come da titolo vorrei copiare degli intervalli di dati (estrazioni del lotto) provo con We Trasfer a inviare un piccolo file dove sono più esplicito

https://we.tl/t-2hf36G17AJ
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 407
Iscritto il: 16/02/10 13:23

Sponsor
 

Re: caricare degli intervalli non consecutivi

Postdi Anthony47 » 26/04/22 18:17

Nell'allegato chiedi una macro "che mi deve caricare 10 intervalli di 8 estrazioni di una ruota con i riferimenti che io indico in "D2" "D3" e "D4" e che si evincono dal foglio Archivio. Questo è un esempio reale dove scelgo di esaminare 10 mesi della ruota di bari relativamente a 8 estrazz. consecutive e che partono sempre dalla 2^ estraz del mese . Se in D3 metto 3 la macro agirà di conseguenza"
Poi in D3 scrivi 2 e in D4 scrivi 9933; i due dati sono congruenti, cioe' l'estrazione 9933 e' la 2^ (di giugno 2021)

Ma se D3 e D4 non sono congruenti, quale input deve essere prevalente? Perche' invece di scrivere un estrazione (es 9933) non ti limiti a scrivere mese/anno e lasci a D3 l'indicazione di quale estrazione prelevare?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: caricare degli intervalli non consecutivi

Postdi papiriof » 26/04/22 20:30

Anthony47 ha scritto:Nell'allegato chiedi una macro "che mi deve caricare 10 intervalli di 8 estrazioni di una ruota con i riferimenti che io indico in "D2" "D3" e "D4" e che si evincono dal foglio Archivio. Questo è un esempio reale dove scelgo di esaminare 10 mesi della ruota di bari relativamente a 8 estrazz. consecutive e che partono sempre dalla 2^ estraz del mese . Se in D3 metto 3 la macro agirà di conseguenza"
Poi in D3 scrivi 2 e in D4 scrivi 9933; i due dati sono congruenti, cioe' l'estrazione 9933 e' la 2^ (di giugno 2021)

Ma se D3 e D4 non sono congruenti, quale input deve essere prevalente? Perche' invece di scrivere un estrazione (es 9933) non ti limiti a scrivere mese/anno e lasci a D3 l'indicazione di quale estrazione prelevare?

Ciao

OK ! se ho capito in d2 e d3 rimane così in d4 metto l'anno (per intenderci nell'esempio 2021) ma poi devo aggiungere il mese in D5 metto "6" ossia giugno ?
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 407
Iscritto il: 16/02/10 13:23

Re: caricare degli intervalli non consecutivi

Postdi papiriof » 26/04/22 20:39

oppure si può mettere in D4 mese/anno tipo 6/21 ??
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 407
Iscritto il: 16/02/10 13:23

Re: caricare degli intervalli non consecutivi

Postdi Anthony47 » 26/04/22 21:57

In D4 si scrive una data del mese/anno da cui partire e si formatta per vedere es Apr-2021; in D3 l'estrazione desiderata; in D2 la ruota.

Credo che funzionera' questa:
Codice: Seleziona tutto
Sub Get10A()
Dim iDate As Date, mInd As Long, lWhee As String, hOff
Dim StaMes, ArSh As Worksheet, StaRow As Long, I As Long
'
Sheets("Freq_Deter").Select
Set ArSh = Sheets("Archivio")
'
lWhee = Range("D2").Value
mInd = Range("D3").Value
StaRow = 7
Cells(StaRow, 1).Resize(1000, 11).ClearContents
hOff = Application.Match(lWhee, ArSh.Range("A2").Resize(1, 100), False)
If Not IsError(hOff) Then
    For I = 1 To 10
        iDate = Application.WorksheetFunction.EoMonth(Range("D4").Value, I - 2) + 1
        StaMes = Application.Match(CLng(iDate), ArSh.Range("C:C"))
        If StaMes <= staold Then
            StaMes = "Incompleto, " & (I - 1) & " su 10"
            GoTo mErr
        End If
        StaMes = StaMes + mInd - 1
        Cells(StaRow + 13 * I - 13, 1).Resize(8, 3).Value = ArSh.Cells(StaMes, 1).Resize(8, 3).Value
        Cells(StaRow + 13 * I - 13, 6).Resize(8, 5).Value = ArSh.Cells(StaMes, hOff).Resize(8, 5).Value
        staold = StaMes
    Next I
MsgBox ("Completato...")
Exit Sub
End If
mErr:
If IsError(hOff) Then hOff = "Manca " & lWhee Else hOff = "Ok"
MsgBox ("Non completato" & vbCrLf & "Ruota: " & hOff & vbCrLf & "Riga: " & StaMes)
End Sub

Ci possono essere casi in cui la macro non puo' completare le 10 "pescate", es perche' non ci sono 10 mesi successivi alla data impostata, o perche' il nome della ruota e' scritto male; un messaggio cerchera' di avvisare.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: caricare degli intervalli non consecutivi

Postdi papiriof » 26/04/22 22:53

Grazie Anthony.
Come al solito perfetto!!!
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 407
Iscritto il: 16/02/10 13:23

Re: caricare degli intervalli non consecutivi

Postdi papiriof » 27/04/22 15:33

Sera Anthony, purtroppo la macro non fa esattamente quello richiesto me lo sono accorto rileggendo le sottonotate
righe di codice che in sostanza considera che in un mese vi siano 13 estrazioni (tutti i mesi) ma non è cosi perchè giugno2021 13 estr luglio 2021 14 estr. Agosto 2021 14 estraz. poi incontra febb 2022 che ne ha 12!! insomma non si può neanche mettere qualche " if" per dirli se inncontri luglio considera 14 perchè se faccio una ricerca più anziana luglio 2020 ne conta 13.....
Cells(StaRow + 13 * I - 13, 1).Resize(8, 3).Value = ArSh.Cells(StaMes, 1).Resize(8, 3).Value
Cells(StaRow + 13 * I - 13, 6).Resize(8, 5).Value = ArSh.Cells(StaMes, hOff).Resize(8, 5).Value
staold = StaMes
Next I
Grazie comunque per quello che hai fatto e per quello che avrai voglia di fare.
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 407
Iscritto il: 16/02/10 13:23

Re: caricare degli intervalli non consecutivi

Postdi papiriof » 27/04/22 15:41

Mi correggo Agosto 21 ne ha 13 ... comunque il discorso non cambia la macro dovrebe valutare a priori il mese e poi decidere se quel 13 deve rimanere tale oppure diventare 14 o addirittura 12
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 407
Iscritto il: 16/02/10 13:23

Re: caricare degli intervalli non consecutivi

Postdi papiriof » 28/04/22 18:12

Ho rivisto con più attenzione la macro e in sostanza mi starebbe bene il modo in cui hai risolto il problema .
La macro, da quello che ho capito fa queste operazioni: in D3 vede la ruota in D4 individua l'indice mensile in D5 con il "mese/anno"sa da dove incominciare a prelevare le prime 8 estrazioni me le scrive ... prosegue , salta 5 estrazioni e ripete a scrivermi il secondo intervallo di 8 estrazioni ovvero il secondo mese questo lo ripete per 10 volte , a patto che i mesi comprendano 13 estrazioni, ma come detto in precedenza non sempre i mesi comprendono 13 estrazioni, per cui questo automatismo quando i mesi comprendono 14 estrazioni le 8 estrazioni successive incominciano non con l'indice 2 cioè con la 2^ estraz mensile ma dalla prima!!!
Non sarebbe un problema basta saperlo e uno fa le sue considerazioni statistiche, metto sotto osservazione questa sequenza 8 salto 5 e alla sesta le ulteriori 8 ecc Ma allora sarebbe un'alta cosa , non servirebbe neanche l'indice mensile basta il numero di estraz (9933 nellìesempio)
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 407
Iscritto il: 16/02/10 13:23

Re: caricare degli intervalli non consecutivi

Postdi papiriof » 01/05/22 09:32

Purtroppo non riesco a raccapezzarmi come agisce la macro :?: Il fatto che considera tutti i mesi con 13 estrazioni scombussola tutto.
Una volta considera come inizio delle 8 estrazioni l'indice 2 e un'altra l'indice 1 per cui come faccio a fare delle previsioni (parliamo sempre dell'esempio Bari indice 2 mese 6/2021) cioè considero ancora l'inizio di dove dovrei iniziare a giocare la 2^ estrazione del mese o inizio a giocare con l'estrazione del primo del mese???
Sto cercando di capire come agisce la macro magari ci arrivo da solo ma la vedo dura per me , ho messo qualche commento
Codice: Seleziona tutto
Sub Get10A()
Dim iDate As Date, mInd As Long, lWhee As String, hOff
Dim StaMes, ArSh As Worksheet, StaRow As Long, I As Long
'
Sheets("Freq_Deter").Select
Set ArSh = Sheets("Archivio")                ''''''' Sia "ArSh"  come il foglio "Arcchivio"
'
lWhee = Range("D2").Value                    ' '''''  la ruota
mInd = Range("D3").Value                      '''''''  l'indice mensile
StaRow = 7                                       ''''''''''' riga inizio dei dati
Cells(StaRow, 1).Resize(1000, 11).ClearContents   '''''pulisco l'intervallo di celle A7:k1000
hOff = Application.Match(lWhee, ArSh.Range("A2").Resize(1, 100), False)
If Not IsError(hOff) Then
    For I = 1 To 10
        iDate = Application.WorksheetFunction.EoMonth(Range("D4").Value, I - 2) + 1
        ' non capisco cosa fa il valore che fa che metto in D4
        StaMes = Application.Match(CLng(iDate), ArSh.Range("C:C"))
        If StaMes <= staold Then
            StaMes = "Incompleto, " & (I - 1) & " su 10"
            GoTo mErr
        End If
        StaMes = StaMes + mInd - 1
        Cells(StaRow + 13 * I - 13, 1).Resize(8, 3).Value = ArSh.Cells(StaMes, 1).Resize(8, 3).Value
        Cells(StaRow + 13 * I - 13, 6).Resize(8, 5).Value = ArSh.Cells(StaMes, hOff).Resize(8, 5).Value
        staold = StaMes
    Next I
MsgBox ("Completato...")
Exit Sub
End If
mErr:
If IsError(hOff) Then hOff = "Manca " & lWhee Else hOff = "Ok"
MsgBox ("Non completato" & vbCrLf & "Ruota: " & hOff & vbCrLf & "Riga: " & StaMes)
End Sub
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 407
Iscritto il: 16/02/10 13:23

Re: caricare degli intervalli non consecutivi

Postdi papiriof » 01/05/22 09:33

Purtroppo non riesco a raccapezzarmi come agisce la macro :?: Il fatto che considera tutti i mesi con 13 estrazioni scombussola tutto.
Una volta considera come inizio delle 8 estrazioni l'indice 2 e un'altra l'indice 1 per cui come faccio a fare delle previsioni (parliamo sempre dell'esempio Bari indice 2 mese 6/2021) cioè considero ancora l'inizio di dove dovrei iniziare a giocare la 2^ estrazione del mese o inizio a giocare con l'estrazione del primo del mese???
Sto cercando di capire come agisce la macro magari ci arrivo da solo ma la vedo dura per me , ho messo qualche commento....
Codice: Seleziona tutto
Sub Get10A()
Dim iDate As Date, mInd As Long, lWhee As String, hOff
Dim StaMes, ArSh As Worksheet, StaRow As Long, I As Long
'
Sheets("Freq_Deter").Select
Set ArSh = Sheets("Archivio")                ''''''' Sia "ArSh"  come il foglio "Arcchivio"
'
lWhee = Range("D2").Value                    ' '''''  la ruota
mInd = Range("D3").Value                      '''''''  l'indice mensile
StaRow = 7                                       ''''''''''' riga inizio dei dati
Cells(StaRow, 1).Resize(1000, 11).ClearContents   '''''pulisco l'intervallo di celle A7:k1000
hOff = Application.Match(lWhee, ArSh.Range("A2").Resize(1, 100), False)
If Not IsError(hOff) Then
    For I = 1 To 10
        iDate = Application.WorksheetFunction.EoMonth(Range("D4").Value, I - 2) + 1
        ' non capisco cosa fa il valore che fa che metto in D4
        StaMes = Application.Match(CLng(iDate), ArSh.Range("C:C"))
        If StaMes <= staold Then
            StaMes = "Incompleto, " & (I - 1) & " su 10"
            GoTo mErr
        End If
        StaMes = StaMes + mInd - 1
        Cells(StaRow + 13 * I - 13, 1).Resize(8, 3).Value = ArSh.Cells(StaMes, 1).Resize(8, 3).Value
        Cells(StaRow + 13 * I - 13, 6).Resize(8, 5).Value = ArSh.Cells(StaMes, hOff).Resize(8, 5).Value
        staold = StaMes
    Next I
MsgBox ("Completato...")
Exit Sub
End If
mErr:
If IsError(hOff) Then hOff = "Manca " & lWhee Else hOff = "Ok"
MsgBox ("Non completato" & vbCrLf & "Ruota: " & hOff & vbCrLf & "Riga: " & StaMes)
End Sub
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 407
Iscritto il: 16/02/10 13:23

Re: caricare degli intervalli non consecutivi

Postdi Anthony47 » 01/05/22 21:24

Mi spiace, avevo perso l'evidenza dei tuoi messaggi...
Comunque la macro non fa affidamento sul numero di estrazioni mensili, ma cerca la prima data del mese, cerca la N-esima e ne copia 8; poi ripete dalla ricerca del mese successivo. Che in un mese ci siano 15 o 10 estrazioni non interessa.

Quindi dovresti descrivere quale e' il problema che tu vedi (perche' io non lo vedo scritto); tipo: mettendo la data XXX e partendo dalla N-esima, al mese di MMMM vedo questo ma mi aspettavo quest'altro per questo motivo.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: caricare degli intervalli non consecutivi

Postdi Anthony47 » 01/05/22 22:43

Aspe'... Penso di aver capito...
Prova aggiungendo al codice questa riga:
Codice: Seleziona tutto
    For I = 1 To 10
        iDate = Application.WorksheetFunction.EoMonth(Range("D4").Value, I - 2) + 1
        StaMes = Application.Match(CLng(iDate), ArSh.Range("C:C"))
        If ArSh.Cells(StaMes, 3).Value < iDate Then StaMes = StaMes + 1      '<<< QUESTA!
        If StaMes <= staold Then
'etc
'etc

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: caricare degli intervalli non consecutivi

Postdi papiriof » 02/05/22 05:55

Eh si, finalmente mi son fatto capire :lol:
Ho fatto alcune prove e semra andare tuttu bene !!!
Grazie Anthony!!!
Win 7+Office 2010
papiriof
Utente Senior
 
Post: 407
Iscritto il: 16/02/10 13:23


Torna a Applicazioni Office Windows


Topic correlati a "caricare degli intervalli non consecutivi":


Chi c’è in linea

Visitano il forum: Nessuno e 14 ospiti