Forum di Excel e VBA, per condividere esperienze e risolvere problemi su: Excel, Word, Access, Power Point, Microsoft Office, macro, Visual Basic e Visual Studio.
nomi celle automatico di mizio (utente non iscritto) data: 19/09/2017 15:41:24
Come posso fare per definire in automatico i nomi alle celle andando a leggere il contenuto da altre celle?
esempio
il contenuto di A1 è pippo1, il nome della cella B1 sarà pippo1
il contenuto di A2 è pluto2, il nome della cella B2 sarà pluto2
il contenuto di A3 è paperino, il nome della cella B2 sarà paperino
e così via fino a A1000
ci vuole una macro o basta una funzione?
qualcuno riuscirebbe ad aiutarmi ?
ciao
di Marius44 data: 19/09/2017 16:48:12
Ciao
Se vuoi assegnare dei Nomi definiti alle celle indicate utilizza questa macro.
Fai sapere. Ciao,
Mario
Option Explicit
Sub NomiDefiniti()
Dim i As Long
For i = 1 To 3
ActiveWorkbook.Names.Add Name:=Cells(i, 1).Value, RefersTo:=Cells(i, 2)
Next i
End Sub
di mizio (utente non iscritto) data: 20/09/2017 08:43:10
grazie Mario
funziona perfettamente in un foglio di lavoro con i nomi di pippo1 pluto2 paperino,
ma quando vado ad applicarlo ai miei codici reali che sono degli alfanumerici dei più svariati tipi che possono arrivare ad una quindicina di caratteri compresi a volte anche il punto ed il trattino,
la macro mi restituisce:
" errore run tume '1004'
la sintassi di questo nome non è corretta ...."
di Marius44 data: 20/09/2017 09:31:50
Ciao
se i tuoi valori arrivano anche a 15 caratteri poco male, la "stringa" li prende tutti.
Il problema sorge nell'assegnare il "nome definito" che NON accetta caratteri speciali. A questo punto credo che l'unica sia quella di cambiare i caratteri speciali del tuo codice in altri ammessi e poi darli in pasto alla macro.
Ciao,
Mario
di mizio (utente non iscritto) data: 20/09/2017 09:52:24
però se vado a definirli manualmente i caratteri speciali puntino e trattino li prende .... non c'è proprio altro modo ?
di mizio (utente non iscritto) data: 20/09/2017 11:34:44
mi correggo nella definizione manuale il trattino non lo prende e lo sostituisce con underscore !!!!
i codici di partenza sono quelli del gestionale e non posso cambiarli .... poi in un'altra cella d'appoggio potrei momentaneamente cambiarli per arrivare a definire il nome cella ma il richiamo finale preferirei che avvenisse con il codice di partenza
di Vecchio Frac data: 20/09/2017 11:43:00
Sì, ma c'è poco da fare.
La sintassi per i nomi definiti non si può cambiare.
Dalla Guida:
Caratteri validi: Il primo carattere di un nome deve essere una lettera, un carattere di sottolineatura (_) o una barra rovesciata (). I caratteri rimanenti del nome possono essere lettere, numeri, punti e caratteri di sottolineatura.
Nota: Non è possibile utilizzare le lettere maiuscole e minuscole "C", "c", "R" e "r" come nome definito, in quanto sono tutte utilizzate come sintassi abbreviata per la selezione di una riga o di una colonna per la cella selezionata quando vengono immesse in una casella di testo Nome o Vai a.
I riferimenti di cella non sono ammessi: non è possibile definire un nome uguale a un riferimento di cella, ad esempio Z$100 o R1C1.
Gli spazi: Gli spazi non sono ammessi all'interno di un nome. Utilizzare il carattere di sottolineatura (_) e il punto (.) come separatori, ad esempio Tasse_Vendite o Primo.Trimestre.
Lunghezza del nome: Un nome può contenere un massimo di 255 caratteri.
Distinzione tra maiuscole e minuscole: I nomi possono contenere lettere maiuscole e minuscole. In Excel non viene applicata la distinzione tra caratteri maiuscoli e minuscoli nei nomi. Se ad esempio si crea il nome Vendite e quindi si crea un altro nome VENDITE nella stessa cartella di lavoro, viene richiesto di scegliere un nome univoco.
di mizio (utente non iscritto) data: 20/09/2017 12:56:27
grazie Mario, me ne sono reso conto, comunque la tua macro mi è ancora utile
e sto provando con delle altre strade ad arrivare al mio obiettivo
secondo te c'è modo di fare la seguente cosa
per esempio:
ho il nome cella pippo_1 a cui corrisponde il valore 2,
la mia cella A1 ha il contenuto pippo-1,
la cella B1 deve riconoscere il trattino (ovunque esso sia) nella cella A1 e richiamare il valore del nome cella pippo_1 cioè 2;
cioè in B1 la formula: se in A1 c'è il trattino allora prendi il contenuto di A1 sostituisci il trattino con l'uderscore, riconoscine il nuovo testo come nome cella e restituiscimi il valore .... e poi la formula trascinarla in tutte le celle B* per fare la stessa cosa con altri contenuti
di Marius44 data: 20/09/2017 14:32:10
Ciao a tutti
Un grazie di cuore a Vecchio Frac per il gradito e sapiente intervento.
Veniamo al tuo ultimo post. Non mi è molto chiaro il procedimento ma, forse, ho capito cosa vorresti fare.
La risposta è: si potrebbe fare! Occorre, però, "vedere" il tuo file, capirne la struttura e trovare la soluzione più adatta con VBA.
Ciao,
Mario
di mizio (utente non iscritto) data: 20/09/2017 14:47:32
https://dropfile.to/Ns0VGE5
grazie a tutti voi
di Marius44 data: 20/09/2017 16:21:22
Ciao
Mi spiace ma non riesco (le formule non sono il mio forte ) a far leggere alla formula il nome definito con l'underscore e fargli capire che deve cercare con il meno.
Forse qualcuno che si intende di formule.
Ciao,
mario
di mizio (utente non iscritto) data: 20/09/2017 16:28:19
grazie lo stesso Mario ciao
di mizio (utente non iscritto) data: 20/09/2017 16:44:56
torno sul solito esempio
ho definito nome cella pippo_1 con valore 2
in A1 ho il contenuto pippo-1
in un altra cella B1 con =RIMPIAZZA(A1;RICERCA("-";A1);1;"_") si ottiene pippo_1
fin qui ci riesco
ma vorrei che nella cella B1 venisse fuori direttamente 100, non pippo_1;
ma non so come o se si può concatenare la formula sopra, che sia con delle funzioni o in una vba, per ottenere il valore del nome cella