| | Post: 86 | Registrato il: 03/09/2018
| Città: GROTTAGLIE | Età: 25 | Utente Junior | Microsoft Office Professional Plus 2019 64 bit | | OFFLINE | |
|
31/10/2019 11:56 | |
Buongiorno a tutti, sto scervellandomi su questo problema.
Ho una sequenza di numeri (0 e 1) disposti in una colonna A7:A33.
Vorrei associare ad ognuno di questi 0 e 1 un numero di quelli contenuti nella colonna J1:J16 secondo un criterio ben definito e molto semplice, compilando così la colonna B7:B33 (risultati).
La prima cella della colonna dei risultati B7:B33 conterrà sempre il numero contenuto nella cella J1.
Ora, nel caso in cui nella cella A7 ci fosse 0 allora vorrei che si inserisse nella cella (B8) il numero pari allo step successivo nella sequenza J1:J16, mentre in caso di 1 vorrei si retrocedesse di 2 step (il valore limite inferiore è quello contenuto nella cella J1 e quello superiore è quello contenuto nella cella J16). Si procederà così per tutte le restanti celle della colonna B7:B33. Allego il file dove ho compilato a mano la colonna dei risultati.
Solitamente la sequenza di 0 e 1 è lunga non meno di 2000 celle.
Grazie🙏
[Modificato da Melissa2018 31/10/2019 11:59] |
|
| | Post: 4.256 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
31/10/2019 12:43 | |
Ciao Melissa
Certo sempre domande facili te eh?
Mi riesce pure difficile immaginare una situazione lavorativa da cui scaturisca un quesito del genere.
Coumnque cosa intendi quando dici
Ora, nel caso in cui nella cella A7 ci fosse 0 allora vorrei che si inserisse nella cella (B8) il numero pari allo step successivo nella sequenza J1:J16,
Io non ho capito.
Alfredo |
| | Post: 2.428 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
31/10/2019 12:47 | |
ciao
ho qualche dubbio sul limite superiore della colonna J
edit: per intendercci il numero posto in J16 del tuo esempio. Che succede se si dovesse superare (sempre nell'esempio) la riga 16 della col. J ??
Comunque fai questa prova.
saluti
Sub Elabora()
' LimSup = 1
' LimInf = Range("J" & Rows.Count).End(xlUp).Row
ur = Range("A" & Rows.Count).End(xlUp).Row
Range("B7") = Range("J1")
riga = 8
rigaJ = 1
For j = 7 To ur - 1
If Cells(j, 1) = 0 Then ' SEQUENZA 0 - numero pari allo step successivo
Cells(j + 1, 2) = Cells(rigaJ + 1, 10)
rigaJ = rigaJ + 1
Else
If rigaJ - 2 < 1 Then ' SEQUENZA 1 - vorrei si retrocedesse di 2 step (
rigaJ = 1
Else
rigaJ = rigaJ - 2
End If
Cells(j + 1, 2) = Cells(rigaJ, 10)
End If
Next j
End Sub
NB: manca l'azzeramento iniziale della col. B [Modificato da dodo47 31/10/2019 12:52] Domenico
Win 10 - Excel 2016 |
| | Post: 86 | Registrato il: 03/09/2018
| Città: GROTTAGLIE | Età: 25 | Utente Junior | Microsoft Office Professional Plus 2019 64 bit | | OFFLINE | |
|
31/10/2019 14:02 | |
alfrimpa, 31/10/2019 12.43:
Ciao Melissa
Certo sempre domande facili te eh?
Mi riesce pure difficile immaginare una situazione lavorativa da cui scaturisca un quesito del genere.
Coumnque cosa intendi quando dici
Ora, nel caso in cui nella cella A7 ci fosse 0 allora vorrei che si inserisse nella cella (B8) il numero pari allo step successivo nella sequenza J1:J16,
Io non ho capito.
Ciao Alfredo! Mi è un po' difficile spiegarti il "totale" a cui sto studiando in poche righe... Sto preparando una tesina per un esame di Termodinamica e per comodità sto creando un foglio per la risoluzione di alcuni problemi. In questo caso gli 0 e gli 1 rappresentano gli esiti di parti del processo a seconda di un range di temperatura specifico e nella colonna J ci sono o quantità di reagenti o codici identificativi di specifici catalizzatori ordinati secondo una determinata scala di valori, etc
La colonna dei risultati mi aiuterà a fare valutazioni sul rischio.
La risposta a questo quesito mi fornirà uno strumento che potrò utilizzare in un foglio più complesso dove faccio simulazioni che generano quelle sequenze.
Inizio inserendo in B7 il valore contenuto in J1; se in A7 c'è un esito 0 allora in B8 utilizzerò il valore contenuto nella cella J2 (successiva a J1). Se in A8 c'è 0 allora in B9 inserirà il valore contenuto nella cella J3 (successiva a J2). Se in A8 c'è 1 allora inserisco il valore contenuto in due celle precedenti a J2 (nella colonna J),etc.
Grazie a Dodo riuscirò, modificando il suo codice, a fare tutte le prove che riterrò opportune.
|
| | Post: 87 | Registrato il: 03/09/2018
| Città: GROTTAGLIE | Età: 25 | Utente Junior | Microsoft Office Professional Plus 2019 64 bit | | OFFLINE | |
|
31/10/2019 14:12 | |
dodo47, 31/10/2019 12.47:
ciao
ho qualche dubbio sul limite superiore della colonna J
edit: per intendercci il numero posto in J16 del tuo esempio. Che succede se si dovesse superare (sempre nell'esempio) la riga 16 della col. J ??
Comunque fai questa prova.
saluti
Sub Elabora()
' LimSup = 1
' LimInf = Range("J" & Rows.Count).End(xlUp).Row
ur = Range("A" & Rows.Count).End(xlUp).Row
Range("B7") = Range("J1")
riga = 8
rigaJ = 1
For j = 7 To ur - 1
If Cells(j, 1) = 0 Then ' SEQUENZA 0 - numero pari allo step successivo
Cells(j + 1, 2) = Cells(rigaJ + 1, 10)
rigaJ = rigaJ + 1
Else
If rigaJ - 2 < 1 Then ' SEQUENZA 1 - vorrei si retrocedesse di 2 step (
rigaJ = 1
Else
rigaJ = rigaJ - 2
End If
Cells(j + 1, 2) = Cells(rigaJ, 10)
End If
Next j
End Sub
NB: manca l'azzeramento iniziale della col. B
Dodo, grazie!!! Hai esattamente compreso ciò desideravo!
Così come hai realizzato il codice è perfetto poichè mi permette, se lo volessi, anche di aumentare il numero di celle della colonna J.
Ora mi cimenterò nel suo utilizzo 🎁
|
|
|