Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Cerca valore restituisci valore

Ultimo Aggiornamento: 27/11/2023 13:14
Post: 108
Registrato il: 25/05/2015
Età: 53
Utente Junior
2007
OFFLINE
18/11/2023 20:15

Salve, per quanto mi applico non riesco a fare nulla, necessito di qualcuno che possa creare una formula o una macero che faccia quanto segue, meglio una macro.
In una tabella che va da A1 a F30, ci sono nella colonna A da 1 a 30 cognomi diversi che non si ripetono mai, le colonna da B a F sono nella riga 1 numerati progressivamente da 1 a 5 sono giorni, mentre allinterno della griglia libera c'è la scritta "ug" una volta per colonna, ma potrebbero essercene più di una per riga.
Ecco cosa deve fare la macro o la formula, deve trovare le "ug" e riportare il cognome presente sulla stessa riga nella colonna A e deve scriverlo nella stessa colonba alla cella 31. Esempio se nella cella C5 c'è "ug" nella cella C31 deve comparire il contenuto della cella A5.
Ci ho provato con cerca.vert, indice e modificando una vecvjia macro di ricerca ma niente . Grazie

P.s. ringrazio anche tutti coloro che mi hanno aiutato in passato.
Post: 871
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
18/11/2023 20:20

e tutto questo senza un file di esempio ?

Leo

LEO
https://t.me/LordBrum
Post: 108
Registrato il: 25/05/2015
Età: 53
Utente Junior
2007
OFFLINE
18/11/2023 20:45

È una cosa su cui mi applico da qualche giorno senza risultati, ora non sono vicino al PC e non ho excel, ho scritto il messaggio dallo smartphone, domani mattina vedo di produrre un foglio excel di esempio e pubblicarlo. Grazie comunque della veloce risposta.
Post: 109
Registrato il: 25/05/2015
Età: 53
Utente Junior
2007
OFFLINE
19/11/2023 09:39

Eccomi, riformulo la richiesta come si deve.
La macro o la formula preferirei una macro se possibile, deve trovare le "ug" nella griglia che va da B1 a F6 e restituire nella casella dell'ultima riga libera il nome presente nella prima cella della riga in cui si trova il dato "ug".
quindi es.: "ug" in C3 nella cella C6 "ab" che si trova in A3 e cos' via per tutta la griglia data.
Spero di essere stato esaustivo.
Grazie
Post: 1.232
Registrato il: 15/01/2016
Città: ROMA
Età: 51
Utente Veteran
2016
OFFLINE
19/11/2023 09:54

Ciao
Perché scomodare il VBA per una banalità così??

In B6 da trascinare a destra


=SE.ERRORE(INDICE($A$2:$A$5;CONFRONTA("ug";B$2:B$5;0));"")
Post: 3.584
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
19/11/2023 10:27

Re:
fabio70m:

...... preferirei una macro se possibile....



Ciao
se proprio:
Sub CercaValori()
Dim mRng As Range, lc As Integer, lr As Long, cel As Range
lc = Cells(1, Columns.Count).End(xlToLeft).Column
lr = Range("A" & Rows.Count).End(xlUp).Row
Set mRng = Range(Cells(2, 2), Cells(lr, lc))
For Each cel In mRng
    If cel.Value = "ug" Then
    Cells(lr + 1, cel.Column) = Cells(cel.Row, 1)
    End If
Next cel
End Sub


Saluti







Domenico
Win 10 - Excel 2016
Post: 110
Registrato il: 25/05/2015
Età: 53
Utente Junior
2007
OFFLINE
19/11/2023 11:09

Gentilissimo, la formula funziona a perfezione, sarei comunque curioso di sapere come si scriverebbe una macro del genere, a scopo didattico diciamo, ma non voglio abusare del tuo tempo. grazie infinite
Post: 4.974
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
19/11/2023 12:26

Re:
fabio70m, 19/11/2023 11:09:

sarei comunque curioso di sapere come si scriverebbe una macro del genere, a scopo didattico diciamo



In che senso? Cosa vuoi sapere?



Alfredo
Post: 3.585
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
19/11/2023 13:04

ciao
te l'ho scritta....non hai visto ??

saluti





Domenico
Win 10 - Excel 2016
Post: 7.439
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
19/11/2023 14:55

Ciao Domenico, credo che la voglia essere spiegata, mi permetto di commentare il tuo Codice

Sub CercaValori()
Dim mRng As Range, lc As Integer, lr As Long, cel As Range'dichiarazione variabili
lc = Cells(1, Columns.Count).End(xlToLeft).Column 'trova l'ultima colonna occupata "F"
lr = Range("A" & Rows.Count).End(xlUp).Row 'Trova l'ultima riga occupata "5"
Set mRng = Range(Cells(2, 2), Cells(lr, lc)) 'crea oggetto range di ricerca "B2:F5"
For Each cel In mRng 'crea ciclo di ricerca per tutto il range "B2:F5" se contiene la sigla "ug"
    If cel.Value = "ug" Then
    Cells(lr + 1, cel.Column) = Cells(cel.Row, 1)'se la trova una riga sotto "5" mette il valore della colonna "A"
    End If
Next cel
End Sub


Sperando che mi sia espresso bene e riesca a capire i vari passaggi

Ciao By Sal (8-D
[Modificato da by sal 19/11/2023 14:55]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 4.975
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
19/11/2023 15:06

Esprimo un parere personale.

Se pure si commenta ogni riga di codice con tre/quattro parole se chi le legge non ha almeno una conoscenza di base del VBA non le capisce comunque.

Se si prende la prima riga commentata dietro questa frase "dichiarazione di variabili" c'è un mondo intero.

E' come pensare di leggere (e capire) un giornale in lingua inglese conoscendo soltanto il significato di "the book is on the table" oppure di "Open the window"
[Modificato da alfrimpa 19/11/2023 15:08]

Alfredo
Post: 872
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
19/11/2023 15:43

1 - Sub CercaValori()

2 - Dim mRng As Range, lc As Integer, lr As Long, cel As Range'dichiarazione variabili

3 - lc = Cells(1, Columns.Count).End(xlToLeft).Column 'trova l'ultima colonna occupata "F"
lr = Range("A" & Rows.Count).End(xlUp).Row 'Trova l'ultima riga occupata "5"
Set mRng = Range(Cells(2, 2), Cells(lr, lc)) 'crea oggetto range di ricerca "B2:F5"

4 - For Each cel In mRng 'crea ciclo di ricerca per tutto il range "B2:F5" se contiene la sigla "ug"
If cel.Value = "ug" Then
Cells(lr + 1, cel.Column) = Cells(cel.Row, 1)'se la trova una riga sotto "5" mette il valore della colonna "A"
End If
Next cel

5 - End Sub

Anche io vorrei esprimere un parere
Premesso che tutti hanno le loro ragioni e che come dice Alfredo dietro ogni parola ci puo' essere un mondo che non si riesce a spiegare in 1 parola,
la risposta alla richiesta di spiegazioni potrebbe stare in certo modo a metà strada, con quello che si chiama pseudocodice.
Lo pseudocodice è spesso usato in programmazione non come schematico commento ma come un piccolo discorso che racconta a parole l'algoritmo.

in questo caso potremmo dire che per cercare dei valori si crea una Sub(routine). punto 1
2 - si dichiarano le variabilii che occuperanno la memoria
3 - ad ogni variabile (nome simbolico) si attribuisce ciò che essa significa e farà
4 - col ciclo for si dice che se il valore della cella è UG allora....eccetera, altrimenti passa al prossimo valore (next)
5 - Chiusura processo

in realtà ho scritto qualcosa in piu dello pseudocodice, ma l'ho fatto per rendere meglio l'idea, e spero di non essere stato inutile ripetendo cose che avete gia detto
In questo caso l'OP forse vorrebbe capire come si concepisce un processo di questo tipo

Leo

LEO
https://t.me/LordBrum
Post: 3.586
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
19/11/2023 16:34

Re:
Ciao a tutti

Fabio scrive:
fabio70m, 19/11/2023 11:09:

Gentilissimo, la formula funziona a perfezione, sarei comunque curioso di sapere come si scriverebbe una macro del genere



pertanto ho ritenuto che lui si riferisse alla "formula" di Danilo (cari saluti).

saluti






Domenico
Win 10 - Excel 2016
Post: 4.976
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
19/11/2023 16:58

Domenico ho visto spesso usata la parola "formula" in luogo di "macro" o "codice" e viceversa.

Alfredo
Post: 4.977
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
19/11/2023 17:02

Re:
L2018, 19/11/2023 15:43:


2 - si dichiarano le variabilii che occuperanno la memoria



Ma a questo punto si dovrebbe spiegare:
1) cosa sono le variabili
2) di quanti tipi possono essere
3) che differenza c'è tra un tipo e l'altro
4) come si dichiarano
5) come di valorizzano



Alfredo
Post: 873
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
19/11/2023 17:21

Re: Re:
alfrimpa, 19/11/2023 17:02:



Ma a questo punto si dovrebbe spiegare:
1) cosa sono le variabili
2) di quanti tipi possono essere
3) che differenza c'è tra un tipo e l'altro
4) come si dichiarano
5) come di valorizzano





ma allora rientriamo nel punto 0, cioè nel fare un trattato di VBA ogni volta che si spiega il codice
perciò lo pseudocodice nel caso del ciclo for dice
per ogni valore della variabile da M a N
senza dire che cosa è una variabile, mentre M e N li avevamo già detti
facciamo questo
next valore della variabile

altro esempio preso da google
finché conta<10
se voto<6 allora stampa "bocciato"
altrimenti stampa "promosso"
conta++


Leo

LEO
https://t.me/LordBrum
Post: 4.978
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
19/11/2023 17:39

Leo quello che volevo dire è che le spiegazioni che si possono dare sui forum se non sono accompagnate da un serio studio del linguaggio servono a poco.

Alfredo
Post: 874
Registrato il: 02/04/2018
Città: PESCARA
Età: 75
Utente Senior
EXCEL 2016 - SPREAD32
OFFLINE
19/11/2023 17:43

Re:
alfrimpa, 19/11/2023 17:39:

Leo quello che volevo dire è che le spiegazioni che si possono dare sui forum se non sono accompagnate da un serio studio del linguaggio servono a poco.



ma certo, è ovvio che chi chiede aiuto deve (anche e soprattutto lui) studiare
che poi questo non succeda è altro discorso

Leo

LEO
https://t.me/LordBrum
Post: 7.440
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
20/11/2023 07:28

Ciao a tutti che casino ho combinato, il mio intento non era spiegare il VBA, che ci sono enciclopedie a riguardo, ma soltanto indicare la riga di codice cosa faceva.

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 64
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
27/11/2023 04:33

La macro funziona benissimo, effettua una ricerca di un testo/valore specifico in un intervallo di celle, scandendo tutte le celle.
Ma esiste un modo più veloce e pratico:
La ricerca mirata con Find e FindNext.
Set intervallo= sheets(nomefoglio).range(b1:f6)
With intervallo
set cella= .find(valorecercato,
If cella is nothing then exit sub
Set cellafirst=cella
Do
Qui il codice dell'azione voluta sulla cella trovata
Set cella=.findnext(cella)
Loop until cella=cellafirst
End with
Post: 65
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
27/11/2023 04:36

set cella= .find(valorecercato,,,xlwhole)' riga corretta
Post: 111
Registrato il: 25/05/2015
Età: 53
Utente Junior
2007
OFFLINE
27/11/2023 13:14

salve ho visto che vi siete lanciati attivamente in questa discussione, confermo che rispetto a chi di voi si è profuso con formule e macro per aiutarmi, io sono ad uno stadio larvale in quanto a conoscenze , ma comunque continuo a studiare e sperimentare , ma da qui a riuscire ce ne vuole. trovo comunque molto interessante l'aspetto vba e un po' di nozioni ce le ho e quindi con le macro già scritte riesco a volte a capirne il funzionamento e ne acquisisco la logica.
comunque posso solo ora riprendere a ragionare su questa cosa la formula funziona benissimo la macro la sperimento e cerco di capirla nei prossimi giorni spulciando a fondo anche tutti gli altri commenti.
ciao
Vota:
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 05:51. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com