Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22
  1. #11
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    Sub diversi2()
    Application.ScreenUpdating = False
    Dim i, j As Long
    Dim confronta As Variant
    j = 1
    For i = 7 To 12
    confronta = Application.Match(Range("a" & i), Range("A2:A6"), 0)
        If IsError(confronta) Then
            Range("e" & j) = Range("a" & i)
            j = j + 1
        End If
    Next i
    ultimariga = Range("e65536").End(xlUp).Row
    Range("e" & ultimariga + 1).Formula = "=SUM(IF(FREQUENCY(MATCH(e1:e" & ultimariga & ",e1:e" & ultimariga & ",0),MATCH(e1:e" & ultimariga & ",e1:e" & ultimariga & ",0))>0,1))"
    Range("e" & ultimariga + 1).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Range("e1:e" & ultimariga).ClearContents
    Range("e" & ultimariga + 1).Select
    Selection.Cut
    Range("E1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    End Sub
    Adesso il conteggio non risente della presenza di eventuali doppioni. Fammi sapere.

  2. #12
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    49
    Mi spieghi a grandi linee come lavora la nuova parte di codice? Perchè il ciclo lo devo ripetere per 7 volte e non capisco se devo ripetere questo procedimento ogni volta che faccio il ciclo for.

  3. #13
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    49
    Ulteriore problema, ci sto pensando, ma magari voi trovate una soluzione più semplice:

    Nella lista che ho (3000 nomi di cui alcuni si ripetono) devo fare una ulteriore lista con solo i nomi che si ripetono e di fianco la frequenza...per la frequenza credo di esserci arrivato, ma come faccio a fare in modo che mi "compaia" la lista con i nomi ripetuti?

  4. #14
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ordina i record, vai su filtro avanzato, spunta copia univoca dei record e incolla i valori distinti in una porzione del foglio.

    Se ad esempio hai la lista dei record nel range a1:a3000 e i valori univoci li hai incollati nella colonna b a partire dalla riga 1, in corrispondenza di c1 metterai

    =CONTA.SE($A$1:$A$3000;b1)

    e poi trascini verso il basso.

    In questo modo hai il numero di occorrenze per ciascuna voce. Con un ulteriore ordinamento elimini agevolmente le voci che non si ripetono.

  5. #15
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    49
    Grande, tutto perfetto! Però per renderlo veramente perfetto, nel codice per trovare quali nomi diversi ci sono nella lista sarebbe bello poter mettere che non finisca di confrontare i valori alla fine della lista, ma che in caso e aggiunga altri in coda faccia il confronto in automatico...per capirci non voglio che il ciclo for i = 1 to 250, ma che al posto del 250 ci sia qualcosa che mi indichi la fine della colonna e non un valore fisso

    Non sono riuscito a spiegarmi bene ma confido nella vostra perspicacia

  6. #16
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    ultimariga = Range("A1").End(xlDown)

    l'esempio mostra come recuperare l'ultima riga della colonna A.

  7. #17
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    49
    come si fa a fare in modo che il ciclo for che va da riga X a riga Y, invece di avere come fine un numero di riga (for i = 1 to 20) abbia un valore che mi indica la fine della tabella? (for i = 1 to "qui voglio che ci sia un valore che non sia fisso, ma possa cambiare in base al fatto che vengano aggiunte delle righe")
    In pratica cerco un comando che indichi l'ultima riga contenente qualcosa

    edit: ops mi sono accorto che lo avevo già chiesto

  8. #18
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    49
    Io ho provato a mettere nel ciclo for i = A2 to ultimariga

    e "ultimariga = Range("A1").End(xlDown)" prima di tutto il codice, ma quando provo a compilare mi da errore di runtime...

  9. #19
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    for i = 2 to ultimariga

  10. #20
    Utente di HTML.it
    Registrato dal
    Jul 2009
    Messaggi
    49
    Si si, ho cambiato solo il riferimento di fine ciclo for, ma mi da errore

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.