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 È possibile rimuovere il vetrino del contatore dell'acqua?  24-04, 07:58  karol  1  54143   Idraulica
Vecchio Come fare per determinare l’acidità degli idrogeni in alfa?  21-04, 17:57  Abramo  1  270   Chimica
Vecchio Quale procedura per trovare il peso atomico del metallo M?  20-04, 08:28  manuel  1  29450   Chimica
Vecchio Quando iniziare attivita fisica dopo intervento appendicite?  19-04, 19:31  Marcos  1  31506   Medicina
Vecchio Quale causa per dolore tra il 1° metatarso e il 1° cuneiforme?  18-04, 18:53  Sigismondo  1  29093   Medicina
Vecchio Come constatare elettrolita forte, debole o non elettrolita?  17-04, 15:24  Abramo  1  24889   Chimica
Vecchio Quali scuole per fare due anni in uno per liceo linguistico?  12-04, 16:14  Luigia  1  16887   Scuola in generale
Vecchio L'AIDS è una malattia con sintomi visibili e riconoscibili?  12-04, 12:03  Edith  1  25231   Medicina
Vecchio Perchè il presscontroll dell'autoclave non si spegne mai?  07-04, 09:11  Marsilio  1  28562   Idraulica
Vecchio Perché colonna pescante si scarica spesso nonostante press control?  06-04, 12:33  karol  1  34074   Idraulica

Rispondi
 
LinkBack Strumenti della discussione Modalità di visualizzazione
  #1 (permalink)  
Vecchio 10-15-2007, 10: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, 03: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, 01: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, 05: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 11:25 AM
Importanti indirizzi per acquistare il medicinale sutent pinuccio Medicina 1 02-20-2010 01:07 AM
inserimento di tubo nella colonna di scarico brave75 Idraulica 0 12-06-2009 07:42 PM
Spostare selezione di celle Excel sempre alla stessa colonna marco Informatica 1 10-13-2009 10:30 PM
Colonna condominiale ostruita dal calcare che intasa il wc bettigalleschi Idraulica 3 12-27-2008 06:05 PM


Tutti gli orari sono GMT +2. Attualmente sono le 01:50 AM.


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