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