059. Filtra Hyperlink

Download PDF

Domanda:
Ho un database Excel 2010, circa 500 record
In colonna A vi sono dei collegamenti ipertestuali.
E’ possibile filtrare i record in modo da avere un elenco solo di quelli che NON presentano in colonna A il collegamento ipertestuale?.

Risposta:
E’ possibile. Ecco come ho risolto.

Ho tratto spunto dalla routine ‘Sub ExtractHL_AdjacentCell’ presente sul sito ‘http://www.contextures.com/excelhyperlinkfunction.html’
per quanto riguarda l’individuazione delle celle che contengono Hyperlink

Ho creato due due macro, una per filtrare le celle che contengono hyperlink, una per quelli che non li contengono.

1) Filtra Hyperlink

Ciclo nella colonna 1 dello sheet1 per individuare gli hyperlink,

For Each HL In Sheet1.Columns(1).Hyperlinks

Next

mano mano che li individuo li inserisco nel vettore ‘ElencoDaFiltrare(cnt)’
che ridimensiono ogni volta incrementando la variabile ‘cnt’

ReDim Preserve ElencoDaFiltrare(cnt)
ElencoDaNonFiltrare(cnt) = HL.TextToDisplay
cnt = cnt + 1

Utilizzo poi i valori inseriti nel vettore come criterio del filtro

Criteria1:=ElencoDaFiltrare

2) Filtra Non Hyperlink

Prima inserisco gli Hyprlink nel vettore ‘ElencoDaNonFiltrare(cntL)’
poi confronto ad uno ad uno i valori della colonna 1 con gli elementi di tale vettore.
Se non sono presenti in tale vettore, li inserisco nel vettore ‘ElencoDaFiltrare(cntNoL)’

Per richiamare gli elementi del primo vettore, imposto il valore di V
da ‘0’ (il primo elemento di ogni vettore) a ‘cntL – 1’ (numero degli elementi del vettore -1
perché il valore del primo elemento è ‘0’)

For i = 2 To Last_Row

    For v = 0 To cntL - 1
         If Sheet1.Cells(i, 1) = ElencoDaNonFiltrare(v) Then
            Link = True
            Exit For
         Else
         Link = False
         End If
    Next v

    If Link = False Then
       ReDim Preserve ElencoDaFiltrare(cntNoL)
       ElencoDaFiltrare(cntNoL) = Sheet1.Cells(i, 1)
       cntNoL = cntNoL + 1
    End If

Next i

A voi il file:
APRI

Riccardo Vincenti

The following two tabs change content below.