Condividi:        

MACRO O FORMULA

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

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 24/11/12 16:43

Indipendentemente dal file, non abbiamo mica due archivi diversi?

Range B3:F20 =

49 univoci
41 doppioni
Di cui il 78 è presente tre volte
Totali 90 numeri

https://dl.dropbox.com/u/18220462/IMMAGINI/UNIVOCI.PNG

dalla riga 19

https://dl.dropbox.com/u/18220462/IMMAG ... a%2019.PNG
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Sponsor
 

Re: MACRO O FORMULA

Postdi Flash30005 » 24/11/12 17:12

Io non so dove tu abbia preso quell'archivio o cosa abbia fatto all'archivio originale
perché io alla riga 3 ho il concorso 3950 e non 5000
Vedi immagine
Immagine

Uploaded with ImageShack.us


Se manometti il file e poi fai riferimento su cose che non ho perdiamo solo tempo inutilmente


ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 24/11/12 18:25

Abbi pazienza, io stavo ragionando con il file che ho inviato la prima volta con l’archivio che parte dall’estrazione 5000. Non ho preso nulla a casaccio!

Ad ogni modo cerchiamo di riprendere la matassa, ok?
Partenza 3950

Range C3:G20, gli univoci sono 33 ma in CZ20:EC20 ne conto solamente 30 dei quali:

Il numero 5 non deve esserci, trattasi di un doppione e non univoco.
Il 26 neanche, doppione.
27 altro doppione.

Non li controllo tutti ma è evidente che la stringa ha errori.

Immagine

Immagine

Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO O FORMULA

Postdi Flash30005 » 24/11/12 23:21

Ho capito dov'è nato l'inghippo o il bug
da un cero momento in poi si è aggiunta una colonna nel foglio di ogni ruota
La colonna B con il nome Ruota e quindi la macro forniva dati errati nel senso che la colonna G non veniva conteggiata
per questo alcuni numeri doppi venivano riportati e non venivano aggiunti numeri (come il 2) che si trovavano sulla colonna G

Per il nuovo archivio usa queste due macro
Codice: Seleziona tutto
Sub ContaUnici()
Risp = MsgBox(Prompt:="Attenzione stai per cancellare i dati già elaborati - Continuo?", Buttons:=vbYesNo)
If Risp = 6 Then
Start = Timer
Application.ScreenUpdating = False
Application.Calculation = xlManual
For FF = 1 To Worksheets.Count
If Len(Sheets(FF).Name) > 2 Then GoTo SaltaFF
Sheets(FF).Select
UR1 = Range("A" & Rows.Count).End(xlUp).Row
Range("CV3:GK" & UR1).ClearContents
Range("J3:CU" & UR1).ClearContents
For RR1 = 3 To UR1 - 18 Step 18
    For NR = 1 To 90
        MyPre = Evaluate("=SUM(COUNTIF(C" & RR1 & ":G" & RR1 + 17 & "," & NR & "))")
        If MyPre = 1 Then
            UC1 = Cells(RR1 + 17, Columns.Count).End(xlToLeft).Column + 1
            If UC1 < 104 Then UC1 = 104
            Cells(RR1 + 17, UC1).Value = NR
        End If
    Next NR
Next RR1
UR2 = Range("CZ" & Rows.Count).End(xlUp).Row
For Passo = 1 To 5
For RR2 = 20 To UR2 Step 18
    UC2 = Cells(RR2, Columns.Count).End(xlToLeft).Column
    For CC2 = 104 To UC2
        NR = Cells(RR2, CC2).Value
       
        If Passo = 1 Then
            MyPre = Evaluate("=SUM(COUNTIF(C" & (RR2 + 1) + (Passo - 1) * 18 & ":G" & (RR2 + 18) + (Passo - 1) * 18 & "," & NR & "))")
            Cells(RR2 - 1 - (Passo - 1), CC2).Value = MyPre
            If MyPre > 0 Then
                For RR3 = RR2 + 1 To RR2 + 18
                    MyPre3 = Evaluate("=SUM(COUNTIF(C" & RR3 & ":G" & RR3 & "," & NR & "))")
                    If MyPre3 = 1 Then Cells(RR3, NR + 9).Value = NR
                Next RR3
            End If
            Range("CX" & RR2 - 1 - (Passo - 1)).Value = Passo * 18
        Else
            myform = "=MAX(R" & RR2 - 1 & "C" & CC2 & ":R" & RR2 - Passo + 1 & "C" & CC2 & ")"
            If Application.ReferenceStyle = xlA1 Then myform = Application.ConvertFormula(myform, xlR1C1, xlA1)
            MyMax = Evaluate(myform)
            If MyMax = 0 Then
                MyPre = Evaluate("=SUM(COUNTIF(C" & (RR2 + 1) + (Passo - 1) * 18 & ":G" & (RR2 + 18) + (Passo - 1) * 18 & "," & NR & "))")
                Cells(RR2 - 1 - (Passo - 1), CC2).Value = MyPre
                Range("CX" & RR2 - 1 - (Passo - 1)).Value = Passo * 18
            End If
        End If
    Next CC2
    Range("CW" & RR2 - 1 - (Passo - 1)).Value = Evaluate("=SUM(COUNTIF(CZ" & RR2 - 1 - (Passo - 1) & ":IV" & RR2 - 1 - (Passo - 1) & "," & 0 & "))")
    Range("CW" & RR2).Value = Evaluate("=SUM(CW" & RR2 - 10 & ":CW" & RR2 - 1 & ")")
    Range("CV" & RR2).Value = "Tot"
Next RR2
Next Passo
SaltaFF:
Next FF
ContaRitardi
Sheets("BA").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Fine = Timer - Start
MsgBox "Elaborato in " & Int(Fine) & " sec"
End If
End Sub

Sub ContaUniciAgg()
Start = Timer
Application.ScreenUpdating = False
Application.Calculation = xlManual
For FF = 1 To Worksheets.Count
If Len(Sheets(FF).Name) > 2 Then GoTo SaltaFF
Sheets(FF).Select
UR1 = Range("A" & Rows.Count).End(xlUp).Row
UR2 = Range("CZ" & Rows.Count).End(xlUp).Row
For RR1 = UR2 To UR1 - 18 Step 18
    For NR = 1 To 90
        MyPre = Evaluate("=SUM(COUNTIF(C" & RR1 & ":G" & RR1 + 17 & "," & NR & "))")
        If MyPre = 1 Then
            UC1 = Cells(RR1 + 17, Columns.Count).End(xlToLeft).Column + 1
            If UC1 < 104 Then UC1 = 104
            Cells(RR1 + 17, UC1).Value = NR
        End If
    Next NR
Next RR1
UR2 = Range("CZ" & Rows.Count).End(xlUp).Row
For Passo = 1 To 5
For RR2 = UR2 - 18 * 5 To UR1 Step 18
    UC2 = Cells(RR2, Columns.Count).End(xlToLeft).Column
    For CC2 = 104 To UC2
        NR = Cells(RR2, CC2).Value
        If Passo = 1 Then
            MyPre = Evaluate("=SUM(COUNTIF(C" & RR2 + 1 & ":G" & RR2 + 18 & "," & NR & "))")
            Cells(RR2 - 1, CC2).Value = MyPre
            If MyPre > 0 Then
                For RR3 = RR2 + 1 To RR2 + 18
                    MyPre3 = Evaluate("=SUM(COUNTIF(C" & RR3 & ":G" & RR3 & "," & NR & "))")
                    If MyPre3 = 1 Then Cells(RR3, NR + 9).Value = NR
                    Range("CX" & RR2 - 1 - (Passo - 1)).Value = Passo * 18
                Next RR3
            End If
        Else
            myform = "=MAX(R" & RR2 - 1 & "C" & CC2 & ":R" & RR2 - Passo + 1 & "C" & CC2 & ")"
            If Application.ReferenceStyle = xlA1 Then myform = Application.ConvertFormula(myform, xlR1C1, xlA1)
            MyMax = Evaluate(myform)
            If MyMax = 0 Then
                MyPre3 = Evaluate("=SUM(COUNTIF(C" & (RR2 + 1) + (Passo - 1) * 18 & ":G" & (RR2 + 18) + (Passo - 1) * 18 & "," & NR & "))")
                Cells(RR2 - 1 - (Passo - 1), CC2).Value = MyPre3
                Range("CX" & RR2 - 1 - (Passo - 1)).Value = Passo * 18
            End If
        End If
    Next CC2
     Range("CW" & RR2 - 1 - (Passo - 1)).Value = Evaluate("=SUM(COUNTIF(CZ" & RR2 - 1 - (Passo - 1) & ":IV" & RR2 - 1 - (Passo - 1) & "," & 0 & "))")
    Range("CW" & RR2).Value = Evaluate("=SUM(CW" & RR2 - 10 & ":CW" & RR2 - 1 & ")")
    Range("CV" & RR2).Value = "Tot"
Next RR2
Next Passo
SaltaFF:
Next FF
ContaRitardi
Sheets("BA").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Fine = Timer - Start
MsgBox "Elaborato in " & Int(Fine) & " sec"
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 25/11/12 03:16

Ok, ti ringrazio!!!
Notte
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 25/11/12 22:45

Buona serata, avrei bisogno del vostro prezioso aiuto anche per questa formula.

In J3:BG3 devo segnare i numeri univoci che si trovano in C3:G19.

La medesima formula devo poterla utilizzare anche J22:BG22 e J41:BG41 e eventualmente anche oltre.
GRAZIE

Allego file
https://dl.dropbox.com/u/18220462/FILE/ ... FORUM.xlsx

Immagine
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 25/11/12 23:27

Scusatemi ma ho dimenticato un particolare molto importante.
I numeri nella stringa devono essere inseriti in un'unica cella unita e separati da un punto (.)

2.4.5.8.11.18.19.25.26.28.37.41.43 etc.

Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO O FORMULA

Postdi Anthony47 » 25/11/12 23:45

Stavo per rispondere
In J3:
Codice: Seleziona tutto
=SE(CONTA.SE($C3:$G19;J$1)=1;J$1;"")

Copia poi verso destra e poi in J22:BG22 e J41:BG41


Ma la tua ultima precisazione mi ha spiazzato: di quale stringa parli?

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

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 25/11/12 23:58

No Anthony, forse mi sono spiegato male?

J3:BG3 sono una cella unica dentro la quale, i numeri inseriti e separati da un punto (.) sono gli univoci del range C3:G19

Seleziono J3:BG3 e trasformo le celle singole in unica cella unita.
ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO O FORMULA

Postdi Anthony47 » 26/11/12 00:16

Mah... a che serve?
Metti questo codice in un modulo vba
Codice: Seleziona tutto
Function inutile(ByRef myR As Range) As String
For I = 1 To 90
If Application.WorksheetFunction.CountIf(myR, I) = 1 Then myInut = myInut & "." & I
Next I
inutile = Mid(myInut, 2, 9999)
End Function

Poi userai la formula
Codice: Seleziona tutto
=inutile(C3:G19)


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

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 26/11/12 00:27

A cosa serve? Ti riferisci alla stringa o altro?

Provo questi codici, grazie.
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 26/11/12 00:40

Scusa, come inserisco questo codice in un modulo?
Le celle unite, le fa in automatico o le faccio io?

=inutile(C3:G19)

Questa dove la incollo?

Grazie
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 26/11/12 00:58

Ci sono arrivato ma non riesco a incollare questi numeri così composti. il formato deve venir fuori come testo.
Questi numeri devo prenderli e incollarli in un programma laddove richiede per l'appunto il formato "testo".

Ora ho capito anche la tua domanda del perché averli in quel modo.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO O FORMULA

Postdi Anthony47 » 26/11/12 01:13

Usa il codice come una qualsiasi macro; metti la formula dove vuoi tu, ad esempio in J3.
Le celle unite io e odio, quindi te le devi unire da solo.
Per gli altri intervalli userai una formula analoga; anzi puoi copiare J3 in J22 e poi J41

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

Re: MACRO O FORMULA

Postdi Anthony47 » 26/11/12 01:23

Lascia stare le formule (anche se non capisco perche' non riesci a incollare il risultato) e aggiungi quest' altro codice:
Codice: Seleziona tutto
Sub Inut()
Range("J3") = Inutile(Range("C3:G19"))
Range("J22") = Inutile(Range("C22:G38"))
Range("J42") = Inutile(Range("C41:G57"))
End Sub

Poi manda in esecuzione la Inut

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

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 26/11/12 02:28

Sempre meglio, grazie.
Il fatto di non poter incollare dipende dal programma. Se non proviene da un file di testo, non l'accetta. Comunque, come detto, ho risolto incollando su txt.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO O FORMULA

Postdi Flash30005 » 26/11/12 04:52

Beh!
Allora scrivi direttamente nel file.txt le tre (o più righe) che ti occorrono ;)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 26/11/12 14:44

No! Cosa faccio, anziché guadagnar tempo e lavoro, lo moltiplico?
Dal foglio Excel copio e incollo sul blocco note ed è fatto.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

Re: MACRO O FORMULA

Postdi Flash30005 » 26/11/12 15:06

?
Io credo che farai almeno un'operazione in meno
non avere la stringa su excel che devi copiare e inserirla nel blocco note
ma far inserire dalla macro la stringa in un file testo (tipo blocco note).
A meno che non intendi solo memorizzarla negli "appunti" come lo vorrebbe un certo programma che conosco...

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: MACRO O FORMULA

Postdi Lucio Peruggini » 26/11/12 17:52

Hai azzeccato!
Il motivo era proprio quello. Comunque stato risolto, grazie.
Ciao
Lucio P.
Versione Office - 2013
Lucio Peruggini
Utente Senior
 
Post: 896
Iscritto il: 24/01/11 16:23

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "MACRO O FORMULA":


Chi c’è in linea

Visitano il forum: papiriof e 54 ospiti