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

[Excel] evidenziare quando in una tabella (filtrata) si superano dei limiti minimi. Opzioni
aetio
Inviato: Friday, August 06, 2010 3:53:04 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
non si può dire che stia con le mani in mano.... ahahah
a10n11 mi ha appena risolto in modo geniale un grande problema... e già sono alle prese con un'altra tipologia di analisi delle tabelle che ormai sogno anche di notte :))

Nella FOTO è sintetizzato il quesito:
In una tabella (da col.H a col.AG) ho delle celle bordate e colorate, per evidenziarne il valore. In col.AH viene applicato un filtro da 1 a 10 a seconda dell'esigenza dell'analisi da fare alla tabella (questa è la variabile che condiziona il risultato delle righe messe in evidenza da Excel), esigenza dettata dalla necessità di dover ridurre drasticamente determinate carenze causate principalmente da un'insufficiente qualità di monitoraggio del magazzino. In sostanza dovrei impostare o una serie di formule o una macro che mi consenta di evidenziare le volte che in una data colonna della tabella NON si soddisfano le condizioni che segnalano (con bordo e colore) la cella contenete il valore. Per semplificare il conteggio abbiamo stabilito un minimo di 8 volte, per cui quando ci sono celle bianche per più di 8 righe consecutive, nella stessa colonna, viene segnalato il problema...
Un autorevole consiglio è più che apprezzato ;))
Grazie assai e buon pomeriggio,
eZio
Sponsor
Inviato: Friday, August 06, 2010 3:53:04 PM

 
a10n11
Inviato: Saturday, August 07, 2010 11:44:35 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
Salve
essendo il primo giorno di vacanza, spero di aver ben interpretato il problema.
la macro che segue, controlla nella tabella tutte le celle che non hanno un riempimento di colore e nel caso siano 8 o più consecutive, gli traccia un bel bordo.
vedi tu se la macro è attinente al tuo problema.


Code:

Sub Evidenza_max8()
Application.ScreenUpdating = False
For i = 8 To 33
uriga = Cells(Rows.Count, 8).End(xlUp).Row
For Each cl In Range(Cells(2, i), Cells(uriga, i))
x = cl.Row
If cl.Interior.ColorIndex = xlNone Then
cnt = cnt + 1
Else
If cnt >= 8 Then
Set mrange = Cells(cl.Row - cnt, i).Resize(cnt, 1)
With mrange
.Borders.Weight = xlMedium
.Borders.LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
Set mrange = Nothing
End If
cnt = 0
End If
Next
If x = uriga And cnt >= 8 Then
Set mrange = Cells(x - (cnt - 1), i).Resize(cnt, 1)
With mrange
.Borders.Weight = xlMedium
.Borders.LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
cnt = 0
Set mrange = Nothing
End If
cnt = 0
Next i
Application.ScreenUpdating = True
End Sub


saluti
Giap


aetio
Inviato: Saturday, August 07, 2010 5:03:06 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
come sempre con qualche decina di righe mi hai risolto un altro grattacapo di quelli seri...
Ma ora
a10n11 ha scritto:
essendo il primo giorno di vacanza etc.
GIURO che ti lascio in pace...........ahahaha
A parte gli scherzi... Grazie infinite, buon pomeriggio e sopra tutto << "Buone Ferie"!! >> (tra qualche giorno mi ci tuffo anch'io!!)
eZio

Nota: per applicare la macro ad una tabella filtrata basta copiare in un Foglio la tabella filtrata e fare lavorare la macro in quella tabella.
a10n11
Inviato: Monday, August 09, 2010 11:24:54 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
..causa eccesso di esposizione al sole.. mattina sul divano e per passare il tempo quanto segue:

L'evidenziazione su una tabella filtrata è possibile ma non so quanto sia leggibile.
ti posto il codice poi vedi tu se usarlo o meno.

Code:

Sub Evidenza_max8b()
Application.ScreenUpdating = False
With Range("H2:AH" & Rows.Count).Borders
.LineStyle = xlNone
End With
For i = 8 To 33
uriga = Cells(Rows.Count, 8).End(xlUp).Row
For Each cl In Range(Cells(2, i), Cells(uriga, i)).SpecialCells(xlCellTypeVisible)
If Not ctrl Then
RRange = cl.Row
End If
x = cl.Row
If cl.Interior.ColorIndex = xlNone Then
ctrl = True
cnt = cnt + 1
Else
If cnt >= 8 Then
aaa = cl.Row
Set mrange = Cells(RRange, i).Resize(cl.Row - RRange, 1).SpecialCells(xlCellTypeVisible)
With mrange
.Select
.Borders.Weight = xlMedium
.Borders.LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
Set mrange = Nothing
End If
ctrl = False
cnt = 0
End If
Next
If x = uriga And cnt >= 8 Then
Set mrange = Cells(RRange, i).Resize(x, 1).SpecialCells(xlCellTypeVisible)
With mrange
.Borders.Weight = xlMedium
.Borders.LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
ctrl = False
cnt = 0
Set mrange = Nothing
End If
cnt = 0
ctrl = False
Next i
Application.ScreenUpdating = True
End Sub


saluti
Giap

aetio
Inviato: Monday, August 09, 2010 3:45:04 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
a10n11 ha scritto:

..causa eccesso di esposizione al sole..
:)) ahi ahi... brutta storia, di notte non si riesce a dormire: brucia troppo!!

Ho provato la 2^ macro, ma purtroppo nel contempo toglie tutti i bordi alle altre celle. A dire il vero per il mio uso specifico è assai più "pratica" l'altra, che applico in un foglio in cui ho copiato la tabella filtrata...
Comunque, come sempre:
....eccellente!!


Grazie e buon pomeriggio... sul divano :(( > [ma già da domani andrà molto meglio!!...]
eZio.

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.