Condividi:        

Inserimento dati in archivio.

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

Re: Inserimento dati in archivio.

Postdi ahidai » 03/02/12 11:22

Allora confermo che la macro di Anthony a volte la dicitura "Orario - Antiorario" è corretta e a volte no.
Per Flash chiedo se è possibile contare la distanza dal numero successivo e inserire un'altro testo "UGUALE" quando i 2 numeri consecutivi sono uguali.
Ciao.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Sponsor
 

Re: Inserimento dati in archivio.

Postdi Flash30005 » 03/02/12 11:38

Supponendo che esce due volte di seguito il 5
nella riga distanza (col D) va scritto 1
e nella colonna F va scritto Uguale?

Fai sapere
ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserimento dati in archivio.

Postdi Flash30005 » 03/02/12 11:56

Ti avevo fatto delle domande ma credo che sia così
Codice: Seleziona tutto
Sub OrarioAnti()
Application.ScreenUpdating = False
Application.Calculation = xlManual
UR = Worksheets("Foglio2").Range("B" & Rows.Count).End(xlUp).Row
Dim VettO(74) As Integer
VettO(1) = 32
VettO(2) = 15
VettO(3) = 19
VettO(4) = 4
VettO(5) = 21
VettO(6) = 2
VettO(7) = 25
VettO(8) = 17
VettO(9) = 34
VettO(10) = 6
VettO(11) = 27
VettO(12) = 13
VettO(13) = 36
VettO(14) = 11
VettO(15) = 30
VettO(16) = 8
VettO(17) = 23
VettO(18) = 10
VettO(19) = 5
VettO(20) = 24
VettO(21) = 16
VettO(22) = 33
VettO(23) = 1
VettO(24) = 20
VettO(25) = 14
VettO(26) = 31
VettO(27) = 9
VettO(28) = 22
VettO(29) = 18
VettO(30) = 29
VettO(31) = 7
VettO(32) = 28
VettO(33) = 12
VettO(34) = 35
VettO(35) = 3
VettO(36) = 26
VettO(37) = 0
For RR = 2 To UR - 1
    Num1 = Worksheets("Foglio2").Range("B" & RR).Value
    Num2 = Worksheets("Foglio2").Range("B" & RR + 1).Value
    ORiE = ""
NI = -1
NF = -1
For VN = 1 To 37
    If VettO(VN) = Num1 Then
        If NI = -1 Then NI = VN
    End If
    If VettO(VN) = Num2 Then
        If NF = -1 Then NF = VN
    End If
Next VN
If NF - NI < 0 Then NF = 37 + Abs(NF)
esci:
ORiE = "ORARIO"
ValD = (NF - NI) + 1
If ValD = 1 Then
    ORiE = "UGUALE"
Else
    If NF - NI >= 19 Then
        ValD = 38 + (NI - NF)
        ORiE = "ANTIORARIO"
    End If
End If
Worksheets("Foglio2").Range("D" & RR).Value = ValD
Worksheets("Foglio2").Range("F" & RR).Value = ORiE
Next RR
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


La macro in caso di uscita dello stesso numero fornisce 1 perché da tutti gli esempi fatti da te conteggi sempre
il numero di partenza
12 - 13 -....orario”
17 - 24 - la distanza doveva essere 15 ... antiorario ...
7 - 13 - ... antiorario ”
2 - 28 - la distanza doveva essere 11 ...antiorario ...
12


Altrimenti non potresti ottenere i risultati da te citati

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserimento dati in archivio.

Postdi ahidai » 03/02/12 12:06

Flash30005 ha scritto:Ti avevo fatto delle domande ma credo che sia così

La macro in caso di uscita dello stesso numero fornisce 1 perché da tutti gli esempi fatti da te conteggi sempre
il numero di partenza
12 - 13 -....orario”
17 - 24 - la distanza doveva essere 15 ... antiorario ...
7 - 13 - ... antiorario ”
2 - 28 - la distanza doveva essere 11 ...antiorario ...
12

Altrimenti non potresti ottenere i risultati da te citati
ciao

Ciao Flash si in effetti hai ragione, gli esempi fatti da me dicevano questo, grazie per l'aggiunta di "uguale", comunque se è possibile avere "0" per me è meglio altrimenti va bene lo stesso.
Ti ringrazio di nuovo per la pazienza che hai.
Ciao.
PS come si utilizza la formula "prodotto" in una colonna con un filtro. Cioè devo avere il prodotto solo dei numeri filtrati. Grazie
Ultima modifica di ahidai su 03/02/12 12:10, modificato 1 volte in totale.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Inserimento dati in archivio.

Postdi Flash30005 » 03/02/12 12:10

Ok per zero
ma tutti gli esempi riportati poi avranno un numero in meno
:?:

Fai sapere
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserimento dati in archivio.

Postdi ahidai » 03/02/12 12:11

Flash30005 ha scritto:Ok per zero
ma tutti gli esempi riportati poi avranno un numero in meno
:?:

Fai sapere

Ok va bene che hanno un numero in meno.
PS come si utilizza la formula "prodotto" in una colonna con un filtro. Cioè devo avere il prodotto solo dei numeri filtrati. Grazie
Ciao.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Inserimento dati in archivio.

Postdi Flash30005 » 03/02/12 12:18

Questa è l'ultima versione della macro
Codice: Seleziona tutto
Sub OrarioAnti()
Application.ScreenUpdating = False
Application.Calculation = xlManual
UR = Worksheets("Foglio2").Range("B" & Rows.Count).End(xlUp).Row
Dim VettO(74) As Integer
VettO(1) = 32
VettO(2) = 15
VettO(3) = 19
VettO(4) = 4
VettO(5) = 21
VettO(6) = 2
VettO(7) = 25
VettO(8) = 17
VettO(9) = 34
VettO(10) = 6
VettO(11) = 27
VettO(12) = 13
VettO(13) = 36
VettO(14) = 11
VettO(15) = 30
VettO(16) = 8
VettO(17) = 23
VettO(18) = 10
VettO(19) = 5
VettO(20) = 24
VettO(21) = 16
VettO(22) = 33
VettO(23) = 1
VettO(24) = 20
VettO(25) = 14
VettO(26) = 31
VettO(27) = 9
VettO(28) = 22
VettO(29) = 18
VettO(30) = 29
VettO(31) = 7
VettO(32) = 28
VettO(33) = 12
VettO(34) = 35
VettO(35) = 3
VettO(36) = 26
VettO(37) = 0
For RR = 2 To UR - 1
    Num1 = Worksheets("Foglio2").Range("B" & RR).Value
    Num2 = Worksheets("Foglio2").Range("B" & RR + 1).Value
    ORiE = ""
NI = -1
NF = -1
For VN = 1 To 37
    If VettO(VN) = Num1 Then
        If NI = -1 Then NI = VN
    End If
    If VettO(VN) = Num2 Then
        If NF = -1 Then NF = VN
    End If
Next VN
If NF - NI < 0 Then NF = 37 + Abs(NF)
esci:
ORiE = "ORARIO"
ValD = (NF - NI)
If ValD = 0 Then
    ORiE = "UGUALE"
Else
    If NF - NI >= 19 Then
        ValD = 37 + (NI - NF)
        ORiE = "ANTIORARIO"
    End If
End If
Worksheets("Foglio2").Range("D" & RR).Value = ValD
Worksheets("Foglio2").Range("F" & RR).Value = ORiE
Next RR
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Che intendi per prodotto di colonna filtrata?
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserimento dati in archivio.

Postdi Flash30005 » 03/02/12 12:23

Secondo me una volta filtrati i numeri devi copiare quelli visibili e incollarli in un altro foglio oppure nelle rughe non filtrate dello stesso foglio
e poi fai il prodotto selezionando i numeri incollati
altrimenti avrai il prodotto di tutti i numeri nascosti dal filtro

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserimento dati in archivio.

Postdi ahidai » 03/02/12 13:12

Flash30005 ha scritto:Secondo me una volta filtrati i numeri devi copiare quelli visibili e incollarli in un altro foglio oppure nelle rughe non filtrate dello stesso foglio
e poi fai il prodotto selezionando i numeri incollati
altrimenti avrai il prodotto di tutti i numeri nascosti dal filtro

ciao

grazie Flash la macro adesso è perfetta, comunque per quanto riguarda la formula "prodotto" pensavo che ci fosse un'alternativa tipo "subtotale" o se è possibile una macro con lettura dati della colonna A2:A100 e li copia sulla colonna G includendo la formula prodotto.
Grazie di nuovo.
Ciao.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Inserimento dati in archivio.

Postdi Flash30005 » 03/02/12 13:18

Mi devi spiegare perché per avere un filtro hai un codice di filtratura, giusto?
pertanto puoi applicare una formula che quando trova quel codice fa il prodotto del numero corrispondente
Oppure usi la tabella Pivot nella quale imposti il prodotto invece che somma

Ciao

P.s. si può fare anche con macro chiaramente, ma come sai occorrono più informazioni
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserimento dati in archivio.

Postdi ahidai » 03/02/12 13:36

Flash30005 ha scritto:Mi devi spiegare perché per avere un filtro hai un codice di filtratura, giusto?
pertanto puoi applicare una formula che quando trova quel codice fa il prodotto del numero corrispondente
Oppure usi la tabella Pivot nella quale imposti il prodotto invece che somma

Ciao

P.s. si può fare anche con macro chiaramente, ma come sai occorrono più informazioni


Allora, ho copiato dei dati (quote snai) su un foglio excel, metto il filtro dati da menù e filtro le delle quote (di solito le più basse) quindi possono stare sia in col. A segno 1; in col. B segno X; in col. C segno 2; in col. D segno 1X; in col. E segno X2 e in col. F segno 12, quindi una volta filtrate volevo vedere il prodotto finale usciva.
Spero di essermi spiegato, ciao e grazie.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Re: Inserimento dati in archivio.

Postdi Flash30005 » 03/02/12 19:36

Prova con i subtotali
Selezioni il range e segui la procedura
ad ogni cambiamento di...
spunti la colonna valori e selezioni Prodotto
es.:
Codice: Seleziona tutto
=SUBTOTALE(6;C2:C40)


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Inserimento dati in archivio.

Postdi Anthony47 » 04/02/12 23:15

L' argomento mi pare ampiamente risolto, pero' vorrei evitare di lasciare online la mia macro sbagliata (posting.php?mode=reply&f=26&t=94328#pr539979); la "penultima" versione, ritengo funzionante, e' questa:
Codice: Seleziona tutto
    Sub myscost11()
    Dim VettO As Variant
    ColD = "D" '<<< Colonne in cui inserire distanza e Verso
    ColV = "E" '<<<
    '
    UR = Worksheets("Foglio2").Range("B" & Rows.Count).End(xlUp).Row
    '
    VettO = Array(0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, _
            5, 24, 16, 33, 1, 20, 14, 31, 9, 22, 18, 29, 7, 28, 12, 35, 3, 26)
    For I = 2 To UR - 1
        wDist = Abs(Application.Match(Cells(I, 2).Value, VettO, 0) - _
            Application.Match(Cells(I + 1, 2).Value, VettO, 0))
                   
Verso = Application.Match(Cells(I, 2).Value, VettO, 0) > Application.Match(Cells(I + 1, 2).Value, VettO, 0)
                   
    Select Case wDist
    Case 19 To 40
    Cells(I, ColD) = 37 - wDist: If Verso = True Then Cells(I, ColV) = "ORAR" _
        Else Cells(I, ColV) = "AntiORAR"
    Case 1 To 18
    Cells(I, ColD) = wDist: If Verso = True Then Cells(I, ColV) = "AntiORAR" _
        Else Cells(I, ColV) = "ORAR"
    Case 0
    Cells(I, ColD) = 0: Cells(I, ColV) = ""
    End Select
    Next I
    End Sub


Come detto da ahidai era sbagliato il calcolo di Orario/Antiorario.

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

Re: Inserimento dati in archivio.

Postdi ahidai » 07/02/12 19:45

Ciao Anthony, in effetti l'argomento è stato chiuso con l'aiuto brillante di Flash e nonostante ciò ho provato anche la tua macro e confermo anche se non c'era bisogno che la macro da te proposta è funzionante.
Ciao a tutti.
ahidai
Utente Senior
 
Post: 212
Iscritto il: 08/12/10 17:33

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Inserimento dati in archivio.":


Chi c’è in linea

Visitano il forum: Nessuno e 23 ospiti