Vai indietro   Scuola forum (scuo.la) - Forum di discussione per le scuole > Materie di Scuola > Informatica



Top 5 Stats
Latest Posts
Discussione    data, Ora  invio  Risposte  Visite   Forum
Vecchio Qual è il nome di questa molecola di chimica organica?  23-11, 18:32  Abramo  1  1763   Chimica
Vecchio Entrambe le coppie rappresentano strutture limite di risonanza?  22-11, 18:43  Annatar  2  1999   Chimica
Vecchio Dimero D elevato per dieta Reductil da 10mg di sibutramina  09-10, 19:00  Lorenzz  3  22420   Medicina
Vecchio Come modificare valori numerici asse X secondario grafico Excel?  03-09, 16:49  lorenzo  1  12745   Informatica
Vecchio Ha senso bloccare circolazione per polveri sottili solo in città?  02-09, 11:46  Benzene  2  20511   Ecologia
Vecchio Come risolvere sensazione simile all'aria che passa in conchiglia?  01-09, 20:26  Edith  1  12478   Medicina
Vecchio Quali strategie utilizzare nello scrivere un breve racconto?  01-09, 13:30  Benzene  2  19131   Italiano & Letteratura italiana
Vecchio Perché "it is judy" viene tradotto come "stiamo insieme"?  26-08, 21:29  Benzene  2  6711   Inglese
Vecchio Come fare per bilanciare questa reazione di ossidoriduzione?  26-08, 15:41  Benzene  2  6425   Chimica
Vecchio Idrossido di calcio in acqua a neutralizzare acido solforico  26-08, 15:26  Benzene  2  21743   Chimica

Rispondi
 
LinkBack Strumenti della discussione Modalità di visualizzazione
  #1 (permalink)  
Vecchio 10-15-2007, 11:35 PM
Administrator
 
Registrato dal: Jun 2007
Messaggi: 641
predefinito Macro per scorrere e analizzare colonna contenente indirizzi internet

Macro per scorrere e analizzare colonna contenente indirizzi internet


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/

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

codice:
  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
Rispondi quotando
  #2 (permalink)  
Vecchio 10-30-2007, 04:56 PM
Junior Member
 
Registrato dal: Aug 2007
Messaggi: 11
predefinito

Non ho capito bene come vuoi copiare i valori, ma ti consiglierei 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:
  1. Trova() (da l'ordinale dell'n-sima ricorrenza di un carattere)
  2. Sinistra () Destra() Stringa.estrai() per creare la stringa
  3. & che fa da concatenatore di testo
Insieme al classico SE() ed agli operatori logici E() ed O()
Rispondi quotando
  #3 (permalink)  
Vecchio 10-31-2007, 02:04 PM
Administrator
 
Registrato dal: Jun 2007
Messaggi: 641
predefinito

Quote:
Originariamente inviata da Black Visualizza il messaggio
Non ho capito bene come vuoi copiare i valori, ma ti consiglierei 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:
  1. Trova() (da l'ordinale dell'n-sima ricorrenza di un carattere)
  2. Sinistra () Destra() Stringa.estrai() per creare la stringa
  3. & 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
Rispondi quotando
  #4 (permalink)  
Vecchio 11-03-2007, 06:55 PM
Administrator
 
Registrato dal: Jun 2007
Messaggi: 641
predefinito

Bene, alla fine grazie ai gruppi ufficiali usenet sono riuscito a risolvere così:

codice:
Public Sub CercaVuoteSopra() 'trova le vuote nell'intervallo
Dim rngIn As Range

Set rngIn = Range(Range("A1"), Range("A1").End(xlDown)).Offset(, 3)
Dim rngVuota As Range
With rngIn
For i = 1 To rngIn.Cells.Count
  Set rngVuota = rngIn.Cells(i).Find(What:="", _
    SearchOrder:=xlByRows, SearchDirection:=xlNext)
If Not rngVuota Is Nothing Then
 rngVuota.Select
  If GetDomain(rngVuota.Offset(0, -1)) = GetDomain(rngVuota.Offset(-1, -1)) Then

    ActiveCell.Offset(-1, 0).Range("A1:C1").Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveCell.Offset(1, 0).Range("A1").Select
    ActiveSheet.Paste
    
  End If: End If
  Next i
  End With
  Set rngIn = Nothing
  Set rngVuota = Nothing
End Sub
Public Sub CercaVuoteSotto() 'trova le vuote nell'intervallo
Dim rngIn As Range

Set rngIn = Range(Range("A1"), Range("A1").End(xlDown)).Offset(, 3)
Dim rngVuota As Range
With rngIn
For i = 1 To rngIn.Cells.Count
  Set rngVuota = rngIn.Cells(i).Find(What:="", _
    SearchOrder:=xlByRows, SearchDirection:=xlNext)
If Not rngVuota Is Nothing Then
 rngVuota.Select
  If GetDomain(rngVuota.Offset(0, -1)) = GetDomain(rngVuota.Offset(1, -1)) Then

    ActiveCell.Offset(1, 0).Range("A1:C1").Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveCell.Offset(-1, 0).Range("A1").Select
    ActiveSheet.Paste
    
  End If: End If
  Next i
  End With
  Set rngIn = Nothing
  Set rngVuota = Nothing
End Sub

Private Function GetDomain(Stringa)
    Dim oRegExp As Object, strTemp As String
    Dim oMatches   As Object
    Set oRegExp = CreateObject("vbscript.RegExp")
    With oRegExp
        .IgnoreCase = False
        .Global = True
    End With
    oRegExp.Pattern = "^(?:[^/]+://)?([^/:]+/)"
    Set oMatches = oRegExp.Execute(Stringa)
    For Each oMatches In oMatches
        strTemp = strTemp & oMatches.Value
    Next
    Set oRegExp = Nothing
    GetDomain = strTemp
End Function
Poi ho creato una quarta macro che lancia 3 volte la prima e 3 volte la seconda (questo perchè le celle vuote possono anche essere 2-3 di fila) facendo disattivare l'aggiornamento dello schermo per velocizzare la cosa.
Grazie a tutti per l'aiuto!




Rispondi quotando
Rispondi


Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilie sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are attivo


Discussioni simili
Discussione Ha iniziato questa discussione Forum Risposte Ultimo messaggio
Sloccare Excel bloccato in apertura di collegamento internet valerio Informatica 4 07-30-2013 12:25 PM
Importanti indirizzi per acquistare il medicinale sutent pinuccio Medicina 1 02-20-2010 02:07 AM
inserimento di tubo nella colonna di scarico brave75 Idraulica 0 12-06-2009 08:42 PM
Spostare selezione di celle Excel sempre alla stessa colonna marco Informatica 1 10-13-2009 11:30 PM
Colonna condominiale ostruita dal calcare che intasa il wc bettigalleschi Idraulica 3 12-27-2008 07:05 PM


Tutti gli orari sono GMT +2. Attualmente sono le 12:28 PM.


© Copyright 2008-2022 powered by sitiweb.re - P.IVA 02309010359 - Privacy policy - Cookie policy e impostazioni cookie