You are here:--Numeri unici
Numeri unici2019-02-09T13:33:06+02:00

Home Forum Domande su Excel VBA e MACRO Numeri unici

Tag: 

  • Autore
    Articoli
  • Avatargiorgioantonio
    Partecipante
      Post totali: 354

      https://www.dropbox.com/s/rnpxpvxgs4pvvt1/Numeri_Unici.xlsb?dl=0

      Salve,
      per un aiuto in quanto non riesco a trovare le formule
      d adattare al caso e poichè diversi calcoli diversi fra
      essi chiedo se pazientemente mi si può venire incontro
      con del codice VBA.
      Nel file allegato sono riportati i dati conclusivi.
      Cerco di spiegarmi
      Ho colorato i gruppi (10) di numeri (vale sempre il calcolo di riga)
      e da tenere presente che in rigo 1 i gruppi sono numerati.
      il primo calcolo e vedere che tra i gruppi non ci siano numeri uguali
      e trascriverli in cella AX quanti gruppi di numeri fra essi non hanno
      numeri uguali. E nel primo caso = 1 cioè il gruppo 8 mentre gli altri
      fra essi hanno il numero in comune;
      Mentre nella cella AY segnalare qual’è o quali sono i gruppi con numeri unici;
      Terzo calcolo riguarda le celle:
      E – I -M – Q – U – Y – AC – AG – AK -AO
      invece i numeri che si trovano nelle celle (di riga) di quelli uguali
      e di maggior numero da segnalare in AW Se + di 1 : esempio 4_4
      che ci sono 4 numeri uguali e altri 4 numeri uguali fra essi.
      Sperando di essermi spiegato e di venirmi incontro alla richiesta.
      Grazie

    • sidsid
      Moderatore
        Post totali: 718

        Scusa ma non capisco.
        hai detto che il calcolo va fatto sempre in riga.
        Prendiamo la riga 3 (vedi immagine ho cerchiato la riga interessata)

        il primo calcolo e vedere che tra i gruppi non ci siano numeri uguali
        e trascriverli in cella AX quanti gruppi di numeri fra essi non hanno
        numeri uguali. E nel primo caso = 1 cioè il gruppo 8 mentre gli altri
        fra essi hanno il numero in comune;

        Non capisco quale numero hanno in comune tutti i gruppi tranne l’8

      • Avatargiorgioantonio
        Partecipante
          Post totali: 354

          Salve Sid,

          si ogni calcolo va fatto sulla stessa riga
          se ti riferisci alla segnalazione delle colonne
          è perchè il primo calcolo andrebbe fatto sulla
          riga delle celle coloraare in giallo.
          Il secondo calcolo sempre di riga ma delle
          celle come colonne.
          Non so è questo che non ho spiegato bene

        • sidsid
          Moderatore
            Post totali: 718

            Non hai risposto alla ia domanda

            Non capisco quale numero hanno in comune tutti i gruppi tranne l’8

          • Avatargiorgioantonio
            Partecipante
              Post totali: 354

              Scusami non avevo letto tutto quanto hai chiesto
              fra la stessa coppia cioe b3-c3 eccetera non troveremo mai 2
              numeri uguali (praticamente ogni colonna ha lo sviluppo
              dei 90 numeri ) quindi il numero uguale se c’è è tra una coppia e l’altra
              che poi tre coppie hanno lo stesso numero ma sempre tra una coppia e l’altra
              e nel caso della seconda riga 4 delle 10 le coppie diverse sono 7.

            • Avatargiorgioantonio
              Partecipante
                Post totali: 354

                volevo aggiungere che le righe iniziano da 3
                e scendono fino a 4007.
                Per brevità ho riportato solo una 15cina di righe.

              • Avatargiorgioantonio
                Partecipante
                  Post totali: 354

                  Salve

                  il numero 8 si riferisce al gruppo;
                  in prima riga ci sono dei numeri e
                  da 1 a 10 che considero gruppi
                  a sua volta l’8 si riferisce alle 2 colonne sotto.
                  Si escludono per esempio terza riga
                  il 4 del gruppo b-c è presente nel gruppo 4;
                  mentre l’84 del gruppo 2 è presente nel gruppo
                  5 ecc quindi questi gruppi vengono esclusi dal conteggio
                  fino a che il gruppo 8 non ha in comune numeri con altri gruppi
                  Salve

                • Avatargiorgioantonio
                  Partecipante
                    Post totali: 354

                    Salve,
                    chiedo scusa per la mia inesattezza alla spiegazione per quanto chiesto.
                    Analizzo l’immagine postata l’11 c.m.
                    Rigo 1 ci sono 10 numeri e ognuno di questi prende il nome di gruppo fatto di 2 colonne:
                    gruppo1 = B e c; gruppo2 = f E G; gruppo3 = J e K; gruppo4 = N e O; gruppo5 = R e S;
                    gruppo6 = V e W; gruppo7 = Z e AA; gruppo8 = AD e AE; gruppo9 = AH e AI; gruppo10 = AL e AM
                    Ora cntrollo la riga3 con i numeri del gruppo1 e un numero del gruppo1 è presente nel gruppo7
                    controllo il gruppo2 e un numero del gruppo2 è presente nel gruppo5; controllo il gruppo3 e
                    trovo che nel gruppo10 è presente un numero; controllo il gruppo4 e trovo che un numero di essi è presente nel gruppo9; non controllo il gruppo5 perchè ha in comune un umero del gruppo2; … alla fine l’unico gruppo8 non ha numeri in comune con altri quindi in AX3 si scrive 1 per dire quanti gruppi unici mentre in AY3 si scrive 8 il gruppo unico.
                    Brevemente faccio un controllo su rigo 4 i cui numeri di gruppo 4-7-9 hanno un numero in comune ma attenzione che fra un gruppo e l’altro potrebbe capitare di avere 2 numeri di un gruppo uguali nell’altro gruppo che che non verrebbero cmq conteggiati.
                    spero di aver risposto alla domanda di chiarimento
                    gruppi si ma controllati per riga.
                    Salve

                  • Avatargiorgioantonio
                    Partecipante
                      Post totali: 354

                      Non capisco quale numero hanno in comune tutti i gruppi tranne l’8

                      scusate per essere conteggiati NON devono avere numeri in comune.
                      Ad esempio il 4 è presente nel gruppo 7 il cui gruppo è formato dalle colonne Z + AA
                      fermi restando che la lettura dei dati va fatta sempre per riga.

                      Salve

                    • sidsid
                      Moderatore
                        Post totali: 718

                        Questa la macro adattata per come è la struttura della tabella che hai inviato.
                        Da abbinare ad un pulsante

                        Sub NUMERI_UNICI()
                        Dim ws As Worksheet
                        Dim vTabella As Variant, vNColonne As Variant, vRiga(19) As Variant, vFinale(1 To 4005, 1 To 2)
                        Dim j As Long, jj As Long, k As Long, kk As Long, nRiga As Long
                        Dim sNumeri As String, sColonne As String
                        Dim N As Integer
                        
                        Set ws = Sheets("Foglio1") 'nome tuo foglio
                        nRiga = ws.Range("B" & Rows.Count).End(xlUp).Row
                        vTabella = ws.Range("B3:AM" & nRiga)
                        
                        'questo array contine le colonne di riferimento della tabella
                        vNColonne = Array(1, 2, 5, 6, 9, 10, 13, 14, 17, 18, 21, 22, 25, 26, 29, 30, 33, 34, 37, 38)
                        For j = LBound(vTabella) To UBound(vTabella)
                            
                            For jj = LBound(vNColonne) To UBound(vNColonne)
                                vRiga(jj) = vTabella(j, vNColonne(jj))
                            Next jj
                            sNumeri = "#" & Join(vRiga, "##") & "#"
                            For jj = LBound(vRiga) To UBound(vRiga) - 1 Step 2
                                k = k + 1
                                With Application.WorksheetFunction
                                Select Case True
                                     Case (Len(sNumeri) - Len(.Substitute(sNumeri, "#" & vRiga(jj) & "#", _
                                            vbNullString))) / Len("#" & vRiga(jj) & "#") = 1 And _
                                          (Len(sNumeri) - Len(.Substitute(sNumeri, "#" & vRiga(jj + 1) & "#", _
                                            vbNullString))) / Len("#" & vRiga(jj + 1) & "#") = 1
                                    N = N + 1
                                    sColonne = sColonne & k & "-"
                                End Select
                                End With
                            Next jj
                            kk = kk + 1
                            vFinale(kk, 1) = N
                            If sColonne = vbNullString Then
                                vFinale(kk, 2) = vbNullString
                            Else
                                vFinale(kk, 2) = Mid(sColonne, 1, Len(sColonne) - 1)
                            End If
                            N = 0
                            k = 0
                            sColonne = vbNullString
                        Next j
                        With ws.Range("AX3:AY" & 4007)
                            .ClearContents
                            .Value = vFinale
                        End With
                        
                        Set ws = Nothing
                        End Sub
                      • Avatargiorgioantonio
                        Partecipante
                          Post totali: 354

                          Salve Sid,

                          mi scuso per il ritardo alla risposta
                          della richiesta.
                          Ho copiato la macro e il tutto funziona perfettamente.

                          Grazie

                        Devi essere loggato per rispondere a questa discussione.

                        Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                        Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                        Chiudi