Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Macro Celle vuote

Ultimo Aggiornamento: 28/06/2017 13:35
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

Re:
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"?
[SM=x423071]


[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

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

[SM=x423019] Qualcosa mi dice che non ho neanche visto il file allegato al post #5 [SM=x423024]

______________________________________________________________
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
 Range("a2:a13")

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!!! [SM=x423026]
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
Vota: 15MediaObject5,00121 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]
sproteggere celle con macro (10 messaggi, agg.: 02/04/2017 08:15)
macro confronta celle (7 messaggi, agg.: 18/04/2018 15:32)
macro colora riga (14 messaggi, agg.: 14/05/2017 09:59)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 12:44. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com