PDA

View Full Version : Macro Excel per analizzare colonna indirizzi web


ghisirds
30-10-2007, 14:36
Salve,
è tanto che rimando l'analisi di questo difficile problema Excel, ma ora sono deciso nel trovarne la soluzione, se possibile.

Dunque, possiedo un foglio di calcolo con in colonna C un elenco di link internet in ordine alfabetico (con indirizzo completo di http) ed in D, E, F, dei dati che però non ci interessano: ci interessa solo sapere quando nella colonna D vi è una cella vuota.

Infatti io dovrei creare una macro che scorra tutta la colonna D e intervenga quando trova una cella vuota. Quando la trova supponiamo in D8, deve controllare se la cella C7 e C9 possiede lo stesso dominio della cella C8 (che sarà quindi affiancata alla D8).

Per stesso dominio, si intende un indirizzo web fino al primo slash ( / ) ed il resto non conta.
(NB: non il doppio slash// ma solo il singolo/)

Ad esempio questi vanno considerati tutti uguali perchè possiedono la stessa radice http://www.excel.com/


http://www.excel.com/newthread.php
http://www.excel.com/index.html
http://www.excel.com/office/index.html
Questi invece vanno considerati diversi perchè appunto cambia la radice:


http://www.word.com/newthread.php
http://www.new.excel.com/index.html
http://www.excel.it/office/index.html
Quindi alla fine bisogna controllare la stringa dall'inizio e fino alla singola /.

Una volta fatto questo, poniamo che l'indirizzo in C7 sia uguale a C8, deve semplicemente copiare le 3 celle D7:F7 in D8:F8. (Potrebbe essere uguali tutti e 3 i C7, C8 e C9 ma sarebbe indifferente quale copiare, basta che non dia errore la funzione).

Se invece l'indirizzo C8 non fosse uguale a nient'altro, basterebbe far proseguire la macro senza fare niente fino alla prossima cella vuota, e così via fino alla fine.

Come ultima complicazione, le celle vuote potrebbero anche essere 2 o più attaccate: in questo caso bisogna prima eliminare i doppioni controllando sempre il dominio seguendo il sistema di prima.

Lo so, è un casino e andrebbe fatto un passo alla volta, solo che il foglio è già pieno di formule e altre macro (che non ho creato io...) e quindi sarebbe un problema andare a spostare le colonne o aggiungerne, perchè dopo potrebbe non funzionare qualcos'altro.

Non so bene quanto possa essere difficile per un buon programmatore, ma confido che un guru possa risolvere la questione con poche righe di codice.
Gliene sarei tanto grato...!

Grazie mille

__________________
spiegazione illusioni ottiche (http://www.idee-regalo.biz/illusioni-ottiche.html), come vedere i download divx (http://www.ghisirds.it/guida-gomplayer-5.html), ordine dei cavalieri di malta (http://www.knightsofmalta.it/), nuovo forum medicina (http://scuo.la/medicina/)

bimbumbam
30-10-2007, 14:51
Non ho capito bene come vuoi copiare i valori, ma ti consgilierei di fare tutto in un foglio esterno collegato per non spostare niente. Scrivendo macro faresti una cosa ancora più complicata di difficile mantenimento.

Le funzioni che ti servono sono sicuramente tra quelle di testo:
Trova() (da l'ordinale dell'n-sima ricorrenza di un carattere)
Sinistra () Destra() Stringa.estrai() per creare la stringa
& che fa da concatenatore di testo

Insieme al classico SE() ed agli operatori logici E() ed O()

ghisirds
31-10-2007, 12:04
Non ho capito bene come vuoi copiare i valori, ma ti consgilierei di fare tutto in un foglio esterno collegato per non spostare niente. Scrivendo macro faresti una cosa ancora più complicata di difficile mantenimento.

Le funzioni che ti servono sono sicuramente tra quelle di testo:
Trova() (da l'ordinale dell'n-sima ricorrenza di un carattere)
Sinistra () Destra() Stringa.estrai() per creare la stringa
& che fa da concatenatore di testo

Insieme al classico SE() ed agli operatori logici E() ed O()

Il problema è che questo foglio viene riordinato, alcune celle vengono eliminate ed altre aggiunte... con le formule si incasina poi tutto.
Devo fare per forza una macro che quando viene lanciata fa solo quello e nient'altro.
Grazie comunque

bimbumbam
31-10-2007, 14:00
Io ti consiglerei comunque una soluzione ibrida, fai delle celle calcolate con le formule precedenti su cui poi andranno a lavorare le macro.