Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel 2007]- Macro per rilevare colonne particolari Opzioni
aetio
Inviato: Saturday, January 11, 2014 1:36:57 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
eccomi con l’ennesimo problema, e non è un modo di dire… :-)))
in un file come QUESTO (in cui ho cancellato i dati che non ci interessano per la soluzione del problema) ho una serie di tabelle di altezza variabile, tutte però distanziate tra loro di 25 righe (righe qui evidenziate con i numeri in rosso); nel RiepilogoF ve ne sono 5, nel RiepilogoS 26.
Dovrei creare una macro che cerchi ed evidenzi in rosso nelle varie tabelle di altezza superiore a 12 righe, nel range di competenza (uno dei quali è qui evidenziato in verdino nel foglio RiepilogoF, prima tabella, range di uguale Area per tutte le 31 tabelle da esaminare), le colonne in cui vi siano celle vuote per almeno 12 righe iniziando dalla prima (qui in RiepilogoF, prima tabella, nel codice 118, mentre in RiepilogoS nel cod.114 e cod.97.
Grazie infinite, buon pomeriggio
eZio
Sponsor
Inviato: Saturday, January 11, 2014 1:36:57 PM

 
a10n11
Inviato: Sunday, January 12, 2014 6:52:58 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
grosso modo è lo stesso principio della macro che controllava 18 celle vuote con qualche piccola modifica e capire perchè funzioonava nel foglio
RiepilogoF e non nel foglio RiepilogoS (!!le tabelle non partono dalla stessa riga!! - ho aggiunto una riga al foglio RiepilogoS)
questa dovrebbe essere la macro ( s.e.& o.)

Sub Vuote12()

ur = Range("a" & Rows.Count).End(xlUp).Row
Ntab = Int(ur / 25)
riga = 5
ctr = False
For n = 1 To Ntab
Set area = Cells(riga, 36).CurrentRegion
colTab = area.Columns.Count + 35
If area.Rows.Count >= 14 Then
For y = 36 To colTab
Utab = Cells(riga + 23, y).End(xlUp).Row
Set areatab = Range(Cells(riga + 1, y), Cells(riga + area.Rows.Count - 2, y))
areatab.Select
For Each cl In areatab
If cl.Value = "" Then
cont = cont + 1
ctr = True
Else
ctr = False
End If
If ctr = True And Utab = riga And cont >= 12 Then
areatab.Interior.ColorIndex = 3
End If
If Not ctr Then
If cont >= 12 Then
Range(Cells(cl.Row - 1, cl.Column), Cells(cl.Row - 1 - (cont - 1), cl.Column)).Interior.ColorIndex = 3
cont = 0
Else: cont = 0
End If
End If
Next cl
cont = 0
Set areatab = Nothing
Next y
End If
riga = riga + 25
Set area = Nothing
Next n
End Sub

saluti
Giap



aetio
Inviato: Monday, January 13, 2014 9:29:07 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
hai ragione: purtroppo nei diversi fogli di lavoro le tabelle NON partono dalla stessa riga... Sto ovviando a questo problema, per fortuna non generato da me, principalmente dovuto al solito problema: una generale impostazione culturale a "compartimenti stagni" che di fatto produce seri danni al prodotto finale... Chiedo scusa, ma mi era sfuggito questo dettaglio importantissimo!!
Ho testato la tua macro e funziona perfettamente, come sempre. ;-))
Avevo intuito che il concetto di base era quello della sub che controllava le 18 celle vuote, ma- nonostante vi abbia lavorato parecchio prima di decidermi a chiederti l'ennesimo aiuto- mi sono reso conto che certamente non sarei MAI riuscito a modificarla in modo che lavorasse in modo corretto in questo caso specifico. :-((
Grazie infinite, buona giornata
eZio
aetio
Inviato: Thursday, January 16, 2014 4:47:25 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
(rimosso perché doppione)
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.