| | Post: 1 | Registrato il: 26/06/2017
| Età: 49 | Utente Junior | 2013 | | OFFLINE | |
|
27/06/2017 13:02 | |
Ciao
mi occorre un aiuto su una Macro.
Ho necessita che la macro si attivi solo sulle celle valorizzate di una colonna (le celle vuote possono alternarsi a quelle valorizzate).
Ho utilizzato il seguente codice che si attiva su tutte le celle della colonna andando però ad appesantire il file:
ActiveSheet.Range(Selection, Selection.End(xlDown)).AutoFilter Field:=7, Criteria1:= _
"<>Rifatturazione", Operator:=xlAnd
Come posso ovviare al problema?
Spesso mi trovo ad utilizzare la formula val.errore per vedere le celle vuote "bianche".
Spero qualcuno possa aiutarmi.
Grazie anticipatamente.
Tania
|
|
| | Post: 3.318 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
27/06/2017 13:26 | |
Ciao Tania
Dalla tua descrizione non si capisce bene quel che vuoi fare.
Allega quindi un file di esempio con dati (fittizi) spiegazione e mostra il risultato che vuoi ottenere inserendolo a mano. [Modificato da alfrimpa 27/06/2017 13:53]
Alfredo |
| | Post: 1 | Registrato il: 26/06/2017
| Età: 49 | Utente Junior | 2013 | | OFFLINE | |
|
27/06/2017 14:15 | |
Ciao Alfredo
grazie innanzitutto per avermi risposto.
Provo a spiegarmi...
la macro che devo usare deve (in generale) valorizzare solo le celle con un valore. Avevo utilizzato questo codice:
Range(Selection, Selection.End(xlDown))
che però mi valorizza tutte le celle della colonna non solo quelle con una valore. |
| | Post: 3.319 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
27/06/2017 14:24 | |
Tania ti avevo chiesto un file di esempio e su quello inserire manualmente il risultato che vuoi ottenere.
Diversamente è difficile che ti capisca.
Alfredo |
| | Post: 2 | Registrato il: 26/06/2017
| Età: 49 | Utente Junior | 2013 | | OFFLINE | |
|
27/06/2017 15:31 | |
Ciao
ti ho allegato il file con l'indicazione di quello che mi occorre.
Tieni presente che il file avrà molte più colonne ed in ogni colonna una macro dovrà fare una cosa differente.
L'importante è sapere se c'è un modo per attivare la macro solo sulle celle valorizzate escludendo quelle vuote (il DB varia di grandezza).
Fino ad ora ho utilizzato la stringa:
Range(Selection, Selection.End(xlDown))
che andava a sostituire il range reale presente nella colonna al momento della preparazione della macro.
Cercando sui vari blog avevo trovato anche questa stringa:
range("").End(xlUp).Row ma non son riuscita a renderla efficace
Spero così di essermi spiegata meglio ed il file possa far meglio comprendere cosa mi occorre.
Grazie...resto speranzosa di poter trovare aiuto e mi scuso se non son abbastanza chiara ma son alle prime armi con le macro.
|
| | Post: 3.902 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
27/06/2017 16:54 | |
hai allegato file senza macro, perché?
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 3 | Registrato il: 26/06/2017
| Età: 49 | Utente Junior | 2013 | | OFFLINE | |
|
27/06/2017 18:04 | |
Ciao
forse la rendiamo più facile così...
Potresti indicarmi il significato di questa stringa?
Range(Selection, Selection.End(xlDown))
Cosa significa "End(xlDown)"? Forse indica "Fino alla fine del file" (cioè a riga ultima?)
C'è una stringa che indica invece "fino alla cella valorizzata?
PS: dovrei creare un file ad hoc come esempio che varierebbe comunque sempre e non sarebbe ottimale. |
| | Post: 3.320 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
27/06/2017 20:37 | |
Scusa Tania nel file allegato non vedo il risultato desiderato comunque tu vuoi che dal foglio1 siano copiati i soli nomi?
I numeri (che vanno tolti) sono composti sempre dallo stesso numero di cifre?
Il file che hai allegato rispecchia strutturalmente il tuo file reale?
Alfredo |
| | Post: 3.321 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
27/06/2017 20:39 | |
Tania11, 27/06/2017 18.04:
PS: dovrei creare un file ad hoc come esempio che varierebbe comunque sempre e non sarebbe ottimale.
[/POST QUOTE]
I dati possono variare ma la struttura dovrebbe rimanere.
Alfredo |
| | Post: 4 | Registrato il: 26/06/2017
| Età: 49 | Utente Junior | 2013 | | OFFLINE | |
|
27/06/2017 21:00 | |
Ciao...purtroppo temo di non riuscire a spiegare bene cosa mi occorre...
Nelle varie macro che ho fatto nel mio db ho inserito la stringa sopra indicata per eliminare un range specifico.
Temo peró che tale stringa valga per tutte le celle di una colonna, dalla prima all'ultima del foglio excel mentre mi occorre che la macro valorizzi solo le celle attive di una colonna.
Grazie a chi potrá aiutarmi e magari a meglio esporre la mia richiesta...
Sopra ho indicato la stringa... |
| | Post: 1.052 | Registrato il: 27/06/2011
| Utente Veteran | excel 2007 | | OFFLINE |
|
27/06/2017 21:23 | |
ciao Tania,
ho guardato il file che hai allegato al Tuo post #5.
Eliminare i numeri ed i punti, non sarebbe una cosa impossibile,
ma quello che non capisco è il "filtrare le celle vuote":
che senso ha avere un foglio nel quale non vengono evidenziati
i dati che contiene?
In pratica,
che senso ha il criterio del filtro,
"filtrare le celle vuote"?
con "filtrare" le celle vuote,
intendi "eliminare" le righe con celle vuote in colonna "A"?
[Modificato da tanimon 27/06/2017 21:26]
Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future... |
| | Post: 5 | Registrato il: 26/06/2017
| Età: 49 | Utente Junior | 2013 | | OFFLINE | |
|
27/06/2017 22:39 | |
Ciao tanimon
Grazie per avermi risposto.
Il file non credo sia utile perché la macro la so realizzare. Quello che non so fare é utilizzare una stringa che mi permetta di riportare un dato (prestabilito con una macro) solo nelle celle piene di una colonna.
Al momento utilizzo questa stringa che va a sostituire il range iniziale presente al momento della registrazione della macro ( il range varia sempre)
Range(Selection, Selection.End(xlDown))
C'é un codice/stringa che possa aiutarmi ad estendere la macro solo sulle celle valorizzate di una colonna e non su tutte le celle della colonna?
Grazie mille.
|
| | Post: 3.322 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Master | Excel 365 | | OFFLINE |
|
27/06/2017 23:00 | |
Mah, sarà l'età, ma io non capito nulla.
Alfredo |
| | Post: 1.053 | Registrato il: 27/06/2011
| Utente Veteran | excel 2007 | | OFFLINE |
|
27/06/2017 23:39 | |
Tania11, 6/27/2017 10:39 PM:
Quello che non so fare é utilizzare una stringa che mi permetta di riportare un dato (prestabilito con una macro) solo nelle celle piene di una colonna.
non credo di avere capito,
ma se riesci a realizzare una macro,
dovrebbe essere un
for next da riga 2 to ur 'ur ultima riga
valore = tuo_valore
con 1 if:
se cella.value <> "" then
cella.value = tuo_valore
fine se
next
Ciao
Frank
P.S.
il formato delle celle del file che hai allegato è da "aggiustare":
le celle "sembrano" vuote ma non lo sono!
Non credo sia un file fatto "a mano".
Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future... |
| | Post: 504 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Senior | Excel 2016-32bit Win11 | | ONLINE |
|
27/06/2017 23:50 | |
Un saluto a tutti.
Neanche a me è chiara la tua richiesta ma, presumendo che vuoi selezionare manualmente una determinata area contenente sia celle vuote che celle piene e vuoi modificare solo quest'ultime, prova a rielaborare questa mia base per una tua macro: Option Explicit
Sub test()
Dim cella As Range
Dim selezione As Range
Set selezione = Application.InputBox(Prompt:="Selezionare l'Area col mouse", Title:="Scegli Area", Type:=8)
For Each cella In selezione
If Not cella.Value = "" Then
'
'qui fai quello che devi applicare alle celle piene
MsgBox "trovata cella piena in " & cella.Address
'
End If
Next
Set selezione = Nothing
End Sub [Modificato da rollis13 28/06/2017 00:04]
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 1.054 | Registrato il: 27/06/2011
| Utente Veteran | excel 2007 | | OFFLINE |
|
28/06/2017 00:08 | |
ciao,
ormai l'ho fatta sulle tue indicazioni nel file al post #5
ed allego anche il file:
mi sembra funzioni!
La prossima volta fai una domanda UGUALE a quanto chiedi a quello
indicato nel file che alleghi.
Grazie.
Frank
Sub a()
Dim cella As Range, rng As Range
Dim sinistra As Integer, lunghezza As Integer
Set rng = Range("a2:a13") ' imposto il range interessato
For Each cella In rng
cella.Value = Trim(cella.Value)
Next cella
'tolgo il "." ed imposto il range come testo
Range("A2:A13").Replace What:=".", Replacement:=""
Range("A2:A13").NumberFormat = "@"
'elimino le righe che non mi intressano, quelle vuote!
For r = 13 To 2 Step -1
If Cells(r, 1).Value = "" Then
Cells(r, 1).EntireRow.Delete
ElseIf InStr(1, Cells(r, 1).Value) = "" Then
Cells(r, 1).EntireRow.Delete
End If
Next r
'tolgo i numeri prima del nome
For n = 2 To 13
sinistra = InStr(Cells(n, 1).Value, "/")
lunghezza = Len(Cells(n, 1).Value)
Cells(n, 1).Value = Right(Cells(n, 1).Value, lunghezza - sinistra)
Next n
Set rng = Nothing ' distruggo la variabile
End Sub
Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future... |
| | Post: 505 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Senior | Excel 2016-32bit Win11 | | ONLINE |
|
28/06/2017 00:19 | |
Qualcosa mi dice che non ho neanche visto il file allegato al post #5
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 6 | Registrato il: 26/06/2017
| Età: 49 | Utente Junior | 2013 | | OFFLINE | |
|
28/06/2017 07:11 | |
Ciao grazie.
Avete scritto di selezionare un Range("a2:a13") . Il problema é proprio questo. Se seleziono un range fino a cella 13 la prossima volta che ho un range piú ampio la macro mi escluderebbe la nuova sezione. Avrei bisogno di una formula che sostituisca quella che utilizzo (indicata piú volte sopra) e che valorizzi solo le celle piene per tutta la colonna, indifferentemente dal range iniziale. Grazie |
| | Post: 3.903 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
28/06/2017 09:07 | |
in questo caso invece di
prova
LR = Cells(Rows.Count, "A").End(xlUp).Row
Range("a2:a" & LR)
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
| | Post: 7 | Registrato il: 26/06/2017
| Età: 49 | Utente Junior | 2013 | | OFFLINE | |
|
28/06/2017 10:21 | |
Grazie mille Patel45. Hai capito il quesito!!!
Mi spiegheresti solo il significato della stringa che mi hai indicato?
Cosa vuole dire? Scusa ma sono alle prime armi...
LR = Cells(Rows.Count, "A").End(xlUp).Row
Range("a2:a" & LR)
Come posso esattamente modificare la sezione: Range(Selection, Selection.End(xlDown))
Ti riporto la sezione utilizzata:
ActiveSheet.Range(Selection, Selection.End(xlDown)).AutoFilter Field:=8, Criteria1:= _
"<>Uscita da Rifatturazione", Operator:=xlAnd
Grazie mille per la pazienza... |
| | Post: 3.905 | Registrato il: 13/03/2012
| Città: LIVORNO | Età: 78 | Utente Master | 2010 | | OFFLINE | |
|
28/06/2017 13:35 | |
LR = Cells(Rows.Count, "A").End(xlUp).Row
conta il numero delle righe dalla colonna A e partendo dall'ultima (End) va in alto (xlUp) a cercare la prima riga non vuota
LR è il numero di quella riga
sono cose che si trovano facilmente cercando con google.
----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta |
|
|