Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Trova valore uguale e conta righe tra le due celle.

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

Trova valore uguale e conta righe tra le due celle.

Postdi M@rtyn@ » 15/04/12 10:12

Buongiorno a tutti, ho bisogno di aiuto con excel, devo tovare la prima cella con il valore uguale a quella attiva e contare le righe che le separano, potete aiutarmi ad automatizzare questo passaggio? :?:
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Sponsor
 

Re: Trova valore uguale e conta righe tra le due celle.

Postdi scossa » 15/04/12 10:32

M@rtyn@ ha scritto:Buongiorno a tutti, ho bisogno di aiuto con excel, devo tovare la prima cella con il valore uguale a quella attiva e contare le righe che le separano, potete aiutarmi ad automatizzare questo passaggio? :?:


Ciao Martyna,

dovresti fornire qualche indicazione in più:
la cella da cercare deve essere sulla stessa colonna di quella attiva?
Se la risposta è no, la direzione della ricerca in che senso deve avvenire (per righe o er colonne)?
Ad esempio: cella attiva C4 con valore 2; valore 2 presente in K4 ed in C6; quale viene considerata la "prima uguale a.."?
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Trova valore uguale e conta righe tra le due celle.

Postdi M@rtyn@ » 15/04/12 13:52

Ciao scossa, grazie della celerità nel rispondere! :D
I dati sono su otto colonne, e un migliaio di righe, non tutte contenenti dati, a mano faccio:
_seleziono la casella che mi interessa
_inserisco il dato nella finestra trova
_uso il pulsante"Trova successivo"
_con la calcolatrice sottraggo dal numero della riga dove stà il risultato di trova successivo,il numero di riga dove stà il valore scelto.
_il risultato è il numero che mi serve
Ad esempio: il valore di B1 ricompare in E13 le righe che li separano (che poi sarebbero i giorni che li separano) sono 12.
La casella da selezionare può essere su qualsiasi delle colonne.
Sono riuscita ad accelerare un pò usando la formula =RIGHE(B1:E13) al posto della calcolatrice, anche se conta una riga in più non è un dramma, basta saperlo che nel conteggio è incluso anche il giorno di partenza.
Però non è una grossa spinta.
Spero di essere stata chiara e di non aver fatto troppa confusione con un eccesso di informazioni.
Ciao Baci.
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Trova valore uguale e conta righe tra le due celle.

Postdi scossa » 15/04/12 15:24

M@rtyn@ ha scritto:La casella da selezionare può essere su qualsiasi delle colonne.
Sono riuscita ad accelerare un pò usando la formula =RIGHE(B1:E13) al posto della calcolatrice, anche se conta una riga in più non è un dramma, basta saperlo che nel conteggio è incluso anche il giorno di partenza.
Però non è una grossa spinta.
Spero di essere stata chiara e di non aver fatto troppa confusione con un eccesso di informazioni.
Ciao Baci.


Ancora due domande:
- il risultato lo devi scrivere in una cella in particolare? quale?
- una soluzione in VBA è per te accettabile?

P.S.: Potresti fornire un file di esempio?
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 424
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Trova valore uguale e conta righe tra le due celle.

Postdi Zer0Kelvin » 15/04/12 15:38

Ciao, penso che per fare questo ti serva una macro.
Eccone una che dovrebbe fare al caso tuo:
Codice: Seleziona tutto
Public Sub ContaRighe()
Dim risultato, valore
Dim found As Range
    valore = ActiveCell
    Set found = ActiveSheet.UsedRange.Find(valore)
    risultato = found.Row - ActiveCell.Row
    MsgBox "Valore in: " & ActiveCell.Address & "=" & ActiveCell & Chr(13) & _
        "Trovato in: " & found.Address & Chr(13) & _
        "Differenza di righe = " & risultato
       
End Sub

Fammi sapere! :arrow:
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 305
Iscritto il: 08/04/12 11:23

Re: Trova valore uguale e conta righe tra le due celle.

Postdi M@rtyn@ » 15/04/12 16:31

@Scossa
http://www.scribd.com/doc/89514227/EsempioForum
Ciao, ti ho scritto una bozza in fretta, il sito non accettava il documento originale, credo proprio perchè avevo attivato le macro: uso il registratore per fare piccole cose come copiare e spostare in fretta i dati.
Ho aggiunto una colonna "Risultati ricerca" se ti risulta pratico impostare il lavoro così altrimenti vedi tu come ti dicevo a copiare e spostare le cose mi ingegno
@Zer0Kelvin
Hai fatto un bel lavoro, ma hai incluso la cella (riga) di partenza e il risultato è sempre 0.
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Trova valore uguale e conta righe tra le due celle.

Postdi Flash30005 » 15/04/12 17:10

In un modulo inserisci questa macro
Codice: Seleziona tutto
 Sub Trova()
 URR = Range("B" & Rows.Count).End(xlUp).Row
 Riga = ActiveCell.Row
        VS1 = ActiveCell
        With Range("B2:I" & URR)
            Set C = .Find(VS1, LookIn:=xlValues, LookAt:=xlWhole)
                If Not C Is Nothing Then
                    firstAddress = C.Address
                    RC = C.Row
                    Do
                        Set C = .FindNext(C)
                        If firstAddress = C.Address Then Exit Do
                        RV1 = C.Row - ActiveCell.Row
                        Range("K" & Riga).Value = RV1
                        GoTo esci
                    Loop While Not C Is Nothing And C.Address <> firstAddress
                End If
        End With
esci:
 End Sub
 


Nel VBA del Foglio (non modulo) inserisci questo codice
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
URR = Range("B" & Rows.Count).End(xlUp).Row
CheckArea = "B2:I" & URR
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
        Application.EnableEvents = False
        Call Trova
        Application.EnableEvents = True
    End If
End Sub


Adesso clicca su un numero (che si ripete)

Allego il file esempio

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Trova valore uguale e conta righe tra le due celle.

Postdi M@rtyn@ » 15/04/12 20:59

@Flash30005
Ciao, il tuo codice funziona bene sull'esempio ma poi sul mio foglio di lavoro certi risultati sono strani, addirittura un "meno 3" può essere perchè nell' esempio avevo riportato una settimana di lavoro piena dal lunedì al venerdì con sabati e domeniche vuoti mentre nei dati reali può essere successo di non aver lavorato durante la settimana e di aver lavorato nel week end?
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Trova valore uguale e conta righe tra le due celle.

Postdi Flash30005 » 15/04/12 21:24

No, la mcro non prende in considerazione cosa hai messo nella colonna A (la data) ma conta le righe
però se hai selezionato, ad esempio il 34 che è l'ultimo 34 della matrice e ne hai uno 3 righe sopra potrai avere il segno negativo ma possiamo ovviare a questo inconveniente mettendo una condizione (se meno di 1 non trascrive)
in questo punto della macro
Codice: Seleziona tutto
...
              If firstAddress = C.Address Then Exit Do '<<<< esistente
              RV1 = C.Row - ActiveCell.Row                 '<<<< esistente
            If RV1 > 0 then                                           '<<<< Aggiungere
              Range("K" & Riga).Value = RV1               '<<<< esistente
            End If                                                        '<<<< Aggiungere
...


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Trova valore uguale e conta righe tra le due celle.

Postdi M@rtyn@ » 16/04/12 19:08

Ciao Flash30005 , scusami ma mi sono spiegata male mettendo troppo in evidenza il numero negativo.
Ho provato la macro su alcuni dati che avevo già elaborato a mano, della cui esattezza sono sicurissima, ma i risultati sono diversi.
Qui sotto ti scrivo tre colonne di numeri, la prima colonna sono i risultati del lavoro manuale, la seconda colonna i risultati della prima versione della macro e la terza colonna i risultati della macro con la modifica.
Come puoi notare gli errori sono scomparsi, ma io volevo una colonna identica alla prima.
12- 70
17- 17- 17
74- 74- 74
44-- 0
-7-- 7-- 7
-2 --0
54-- 0
30- 30- 30
58- -3
63 -63- 63
La mia impressione è che salti alcuni punti... può essere?
Ho anche selezionato tutte le celle interessate e ho impostato il formato delle celle su numero, ma il risultato è uguale.
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Trova valore uguale e conta righe tra le due celle.

Postdi Flash30005 » 16/04/12 22:06

Nella modifica precedente c'è un errore perché in caso di numero negativo la macro non trascrive
pertanto se mi garantisci che le colonne interessate sono da B alla colonna I
prova questa macro da inserire nel Foglio non nel Modulo

Codice: Seleziona tutto
 Sub Trova()
 URR = Range("B" & Rows.Count).End(xlUp).Row
 Riga = ActiveCell.Row
        VS1 = ActiveCell
        With Range("B2:I" & URR)
            Set C = .Find(VS1, LookIn:=xlValues, LookAt:=xlWhole)
                If Not C Is Nothing Then
                    firstAddress = C.Address
                    RC = C.Row
                    Do
                        Set C = .FindNext(C)
                        If firstAddress = C.Address Then Exit Do
                        RV1 = C.Row - ActiveCell.Row
                        If RV1 > 0 Then
                         Range("K" & Riga).Value = RV1
                         GoTo esci
                        End If
                       
                    Loop While Not C Is Nothing And C.Address <> firstAddress
                End If
        End With
esci:
 End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Trova valore uguale e conta righe tra le due celle.

Postdi M@rtyn@ » 17/04/12 10:25

Grazie Flash,è rimasta una piccola imperfezione, mi dava il risultato sbagliato per la prima cella , e tutti gli altri fino alla riga 134 erano giusti :mmmh: .Cosi ho aggiunto una riga vuota perchè ho pensato se sbaglia solo la prima riga io la evito :D . Adesso B2 è sceso in B3 e avendone controllati un bel pò spero di potermi fidare anche degli altri risultati.
Grazie Baci
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03

Re: Trova valore uguale e conta righe tra le due celle.

Postdi Flash30005 » 17/04/12 14:57

Fai queste correzioni:
nel Vba deglio commenta o cancella le due righe che evidenzio qui:
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
URR = Range("B" & Rows.Count).End(xlUp).Row
CheckArea = "B2:I" & URR
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
        'Application.EnableEvents = False  '<<<<<<<<<<<<<<<<<< elimina o commenta
        Call Trova
        'Application.EnableEvents = True '<<<<<<<<<<<<<<<<<< elimina o commenta
    End If
End Sub

(questa correzione evita di bloccare gli eventi e potrebbero rimanere bloccati nel caso interrompa la macro per un debug
togliendo le righe il funzionamento è garantito)

sostituisci la macro nel modulo con questa
Codice: Seleziona tutto
Sub Trova()
URR = Range("B" & Rows.Count).End(xlUp).Row
Riga = ActiveCell.Row
        VS1 = ActiveCell
        With Range("B2:I" & URR)
            Set C = .Find(VS1, LookIn:=xlValues, LookAt:=xlWhole)
                If Not C Is Nothing Then
                    firstAddress = C.Address
                    RV1 = C.Row - ActiveCell.Row
                        If RV1 > 0 Then
                         Range("K" & Riga).Value = RV1
                         GoTo esci
                        End If
                    Do
                        Set C = .FindNext(C)
                        If firstAddress = C.Address Then Exit Do
                        RV1 = C.Row - ActiveCell.Row
                        If RV1 > 0 Then
                         Range("K" & Riga).Value = RV1
                         GoTo esci
                        End If
                       
                    Loop While Not C Is Nothing And C.Address <> firstAddress
                End If
        End With
esci:
End Sub


Con questa correzione funziona anche alla seconda riga

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Trova valore uguale e conta righe tra le due celle.

Postdi M@rtyn@ » 23/04/12 17:57

Perfetta grazie!
xp con Excel 2007
windows 8 con excel 2013
M@rtyn@
Utente Junior
 
Post: 88
Iscritto il: 02/03/11 21:03


Torna a Applicazioni Office Windows


Topic correlati a "Trova valore uguale e conta righe tra le due celle.":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti