Il problema dei 3 corpi: Attraverso continenti e decadi, cinque amici geniali fanno scoperte sconvolgenti mentre le leggi della scienza si sgretolano ed emerge una minaccia esistenziale. Vieni a parlarne su TopManga.
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Associare ad una sequenza di 0 e 1 dei numeri contenuti in una colonna secondo un determinato criterio

Ultimo Aggiornamento: 31/10/2019 14:12
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

Re:
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

Re:
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 🎁
Vota: 15MediaObject5,0015 1
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:03. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com