Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

creare un elenco squadre

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

creare un elenco squadre

Postdi raimea » 21/11/20 18:03

ciao
in foglio >> generale, col G
ho le 2 squadre di una partita di calcio.

vorrei creare l elenco alfabetico delle squadre
che sono state gestite.

nel foglio squadre vorrei riportare
1na sola volta , tutte le squadre analizzate di col G.

metterle in ordine alfabetico e a fianco scrivere
quante volte e' presente quella squadra
indifferentemente se in casa o fuori casa

vi allego il file

https://www.dropbox.com/s/e86ttq75lt7x3hm/squadre.rar?dl=0


ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1275
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: creare un elenco squadre

Postdi Anthony47 » 21/11/20 20:04

Probabilmente questa:
Codice: Seleziona tutto
Sub ListaTeams()
Dim gArea As Range, oSh As Worksheet, I As Long
Dim wArr, oArr(), mySplit, J As Long, oInd As Long
Dim tArr
'
Set gArea = ThisWorkbook.Sheets("generale").Range("G:G")            '<<< Colonna Sorgente
Set oSh = ThisWorkbook.Sheets("squadre")                            '<<< Foglio Destinazione
wArr = Application.Intersect(gArea.Parent.UsedRange, gArea).Value
ReDim oArr(1 To 1)
'Estrai le squadre:
For I = 1 To UBound(wArr)
    If wArr(I, 1) <> "" Then
        mySplit = Split(wArr(I, 1), "-", , vbTextCompare)
        If UBound(mySplit) = 1 Then
            For J = 0 To 1
                If IsError(Application.Match(Trim(mySplit(J)), oArr, False)) Then
                    oInd = UBound(oArr)
                    oArr(oInd) = Trim(mySplit(J))
                    ReDim Preserve oArr(1 To oInd + 1)
                End If
            Next J
        End If
    End If
Next I
'ordinamento in Bubble Sort:
For I = 1 To UBound(oArr) - 2
    For J = I + 1 To UBound(oArr) - 1
        If oArr(I) > oArr(J) Then
            tArr = oArr(I)
            oArr(I) = oArr(J)
            oArr(J) = tArr
        End If
    Next J
Next I
'Scrivi elenco squadre:
oSh.Range("A2").Resize(1000, 2).ClearContents
oSh.Range("A2").Resize(oInd, 1) = Application.WorksheetFunction.Transpose(oArr)
'Calcola e scrivi Occorrenze:
For I = 1 To UBound(oArr) - 1
    oInd = 0
    For J = 1 To UBound(wArr)
        If InStr(1, wArr(J, 1) & "  ", oArr(I), vbTextCompare) > 0 Then
            oInd = oInd + 1
        End If
    Next J
    oSh.Range("A2").Cells(I, 2) = oInd
Next I
MsgBox ("Vedi risultati su foglio " & oSh.Name)
End Sub

Ricchi commenti aiutano a seguire la macro.

Come sempre le righe marcate <<< andrebbero adattate al tuo caso; nel foglio di destinazione i risultati vengono scritti da A2:B2 verso il basso, mentre in A1:B1 puoi scrivere l’intestazione che preferisci.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17453
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare un elenco squadre

Postdi raimea » 21/11/20 20:27

ciao
e' tutto ok

ho sistemato le piccole cose come indica , come il scrivere

grazie
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1275
Iscritto il: 11/02/10 07:33
Località: lago

Re: creare un elenco squadre

Postdi raimea » 15/12/20 18:03

ciao
piccolo bug, per casi particolari,

la macro mi conta :
4 volte barcellona
2 volte barcellona B

ma sono 2 squadre diverse
ed entrambe sarebbero da conteggiare 2

e' possibile correggere ?

Immagine

ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1275
Iscritto il: 11/02/10 07:33
Località: lago

Re: creare un elenco squadre

Postdi wallace&gromit » 15/12/20 20:48

Mi sembra logico che faccia così, perché Barcellona è scritto effettivamente 4 volte. Per evitare dovresti togliere lo spazio dalla seconda, BarcellonaB apparirebbe solo 2 volte così come il semplice Barcellona.
Office2016 su win7
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2045
Iscritto il: 16/01/12 14:21

Re: creare un elenco squadre

Postdi Anthony47 » 16/12/20 00:43

Mi sembra logico che faccia così, perché Barcellona è scritto effettivamente 4 volte.
E' vero, "quella macro" non distingue una squadra dall'altra, ma e' sbagliato (cioe' e' troppo elementare) l'algoritmo.
Ho modificato l'ultima parte della macro in questo modo:
Codice: Seleziona tutto
'... (altro)
'Calcola e scrivi Occorrenze:
For I = 1 To UBound(oArr) - 1
    oInd = 0
    For J = 1 To UBound(wArr)
'        If InStr(1, wArr(J, 1) & "  ", oArr(I), vbTextCompare) > 0 Then
'            oInd = oInd + 1
'        End If
        If wArr(J, 1) <> "" Then
            mySplit = Split(wArr(J, 1), "-", , vbTextCompare)
            If UBound(mySplit) = 1 Then
                If oArr(I) = Trim(mySplit(0)) Or oArr(I) = Trim(mySplit(1)) Then
                    oInd = oInd + 1
                End If
            End If
        End If

    Next J
    oSh.Range("A2").Cells(I, 2) = oInd
Next I
MsgBox ("Vedi risultati su foglio " & oSh.Name)
End Sub
Sembra funzionare
Le istruzioni "commentate" sono quelle vecchie; le ho lasciate solo per rendere piu' evidente dove sono intervenuto, ma possono essere eliminate

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17453
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creare un elenco squadre

Postdi raimea » 16/12/20 16:30

ciao
e' tutto ok

ho sitemato il pezzo di codice
ora distingue barcelona da barcelona B

grazie
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1275
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "creare un elenco squadre":


Chi c’è in linea

Visitano il forum: Nessuno e 23 ospiti