Condividi:        

Conflitto tra ricerca di un valore e formula nella cella

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

Conflitto tra ricerca di un valore e formula nella cella

Postdi il_puttologo » 12/06/17 11:46

Ciao a tutti! Ho creato una macro che che trova nella colonna S del mio "Foglio2" il valore "1" e copia di conseguenza tutta la riga nel foglio "1". Il problema è che nelle celle della colonna S ho un CERCA.VERT che mi fa comparire i vari numeri, e questo sembra disturbare la mia macro, infatti quando invece vado ad inserire manualmente i numeri nella colonna S tutto fila liscio. Allego il codice che ho scritto sperando riusciate ad aiutarmi! ;)


Codice: Seleziona tutto
Sub VEDIMACCHINA_1()

'ISTRUZIONI PER PULIRE CELLE E POTER COPIARE LA NUOVA LISTA DI PRODUZIONE

Worksheets("1").Activate
For RIGA = 2 To 50
If Cells(RIGA, 17) = "TERMINATO" Then
Cells(RIGA, 1).ClearContents
Cells(RIGA, 2).ClearContents
Cells(RIGA, 3).ClearContents
Cells(RIGA, 4).ClearContents
Cells(RIGA, 5).ClearContents
Cells(RIGA, 6).ClearContents
Cells(RIGA, 7).ClearContents
Cells(RIGA, 8).ClearContents
Cells(RIGA, 9).ClearContents
Cells(RIGA, 10).ClearContents
Cells(RIGA, 11).ClearContents
Cells(RIGA, 17).ClearContents
End If
Next

'ISTRUZIONI PER TROVARE IL NUMERO DELLA MACCHINA E COPIARE LA RIGA

Dim i As Integer            'VALORE NUMERICO NEGATIVO
Dim ur As Long              'VALORE NUMERICO
Dim lr As Long              'VALORE NUMERICO
Dim rng As Range            'rgn VERRA' CONSIDERATO COME UN RANGE
Dim cel As Range

'IL PROBLEMA DOVREBBE TROVARSI QUI!!


ur = Worksheets("Foglio2").Cells(Rows.Count, "S").End(xlUp).Row                 'CONTARIGHE PIENE NELLA COLONNA S
Set rng = Worksheets("Foglio2").Range("S2:S" & ur)                              'rng COMPRESO TRA S2 E L'ULTIMA CELLA IN S PIENA
For Each cel In rng                                                             'PER OGNI CELLA NEL NOSTRO rng
lr = Worksheets("1").Cells(Rows.Count, "A").End(xlUp).Row                       'CONTARIGHE PER LA TABELLA DOVE VERRANNO IMPORTATI I DATI
If cel.Value = "1" Then                                                         'SE IL VALORE DELLA CELLA CONTENUTA NEL rng E' 1
For i = -18 To -8                                                               'IMPOSTATO NEGATIVO DA -18 A -9 PER POTER LAVORARE CON L'OFFSET DELLA CELLA S CONTENENTE X1
Worksheets("1").Cells(lr + 1, i + 19).Value = cel.Offset(0, i).Value
Next i
End If
Next cel

'ISTRUZIONE PER ELIMINARE DUPLICATI

Application.ScreenUpdating = False
Range("A2:Q50").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Set currentCell = Worksheets("1").Range("B2")
Do While Not IsEmpty(currentCell)
Set nextCell = currentCell.Offset(1, 0)
If nextCell.Value = currentCell.Value Then
    For f = 0 To 9
        currentCell.Offset(0, f).ClearContents
        currentCell.Offset(0, -1).ClearContents
    Next
End If
Set currentCell = nextCell
Loop
Range("B2").Select

'ISTRUZIONI PER METTERE I CODICI IN ORDINE

Application.ScreenUpdating = False
Range("A2:Q50").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

End Sub
il_puttologo
Utente Junior
 
Post: 22
Iscritto il: 06/03/17 17:44

Sponsor
 

Re: Conflitto tra ricerca di un valore e formula nella cella

Postdi Anthony47 » 13/06/17 00:23

Se nelle celle ci sono dei numeri allora sarebbe piu' corretto usare If cel.Value = 1 Then (invece che "1"); ma non e' questo che provoca "l'incomprensione".
Secondo me il numero presente nella cella non e' esattamente 1, e questo fa fallire l'eguaglianza; opterei per aggiungere un arrotondamento, es
Codice: Seleziona tutto
If Round(cel.Value, 5) = 1 Then               'Arrotondo al 5° decimale


Prova e fai sapere
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Conflitto tra ricerca di un valore e formula nella cella

Postdi il_puttologo » 13/06/17 09:08

Non è quello perchè il numero che vado a cercare è precisamente 1. Ti allego la cartella così forse puoi capire meglio
http://dropcanvas.com/juwz4
il_puttologo
Utente Junior
 
Post: 22
Iscritto il: 06/03/17 17:44

Re: Conflitto tra ricerca di un valore e formula nella cella

Postdi Marius44 » 13/06/17 11:11

Ciao
devi usare PRIMA una funzione che intercetti gli errori. La cella a cui fai riferimento (e che contiene una formula) non sempre dà un risultato (a volte è #N/D)

Codice: Seleziona tutto
For Each cel In rng              'PER OGNI CELLA NEL NOSTRO rng
    lr = Worksheets("1").Cells(Rows.Count, "A").End(xlUp).Row    'CONTARIGHE PER LA TABELLA DOVE VERRANNO IMPORTATI I DATI
    If Not IsError(cel.Value) Then       'SE LA CELLA NON CONTIENE ERRORI
        If cel.Value = 1 Then               'SE IL VALORE DELLA CELLA CONTENUTA NEL rng E' 1
            For i = -18 To -8          'IMPOSTATO NEGATIVO DA -18 A -9 PER POTER LAVORARE CON L'OFFSET DELLA CELLA S CONTENENTE X1
                Worksheets("1").Cells(lr + 1, i + 19).Value = cel.Offset(0, i).Value
            Next i
        End If
    End If
Next cel


Prova e fai sapere. Ciao,
Mario
Marius44
Utente Senior
 
Post: 658
Iscritto il: 07/09/15 22:00

Re: Conflitto tra ricerca di un valore e formula nella cella

Postdi Anthony47 » 13/06/17 11:57

Io ho le idee molto piu' confuse di Marius (vedi la sua proposta, sopra).
Hai infatto parlato di foglio "1" e di Cerca.Vert inserito in colonna S; ma da quello che vedo foglio1 colonna S e' vuota.

:-?
Avatar utente
Anthony47
Moderatore
 
Post: 19436
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Conflitto tra ricerca di un valore e formula nella cella

Postdi Marius44 » 13/06/17 15:08

Buon pomeriggio

@Anthony
l'utente ha scritto
che che trova nella colonna S del mio "Foglio2" il valore "1" e copia di conseguenza tutta la riga nel foglio "1". Il problema è che nelle celle della colonna S ho un CERCA.VERT che mi fa comparire i vari numeri


Ecco perchè ho suggerito la Funzione SE.ERRORE (o simile di Excel per VBA)
Ciao,
Mario
Marius44
Utente Senior
 
Post: 658
Iscritto il: 07/09/15 22:00


Torna a Applicazioni Office Windows


Topic correlati a "Conflitto tra ricerca di un valore e formula nella cella":


Chi c’è in linea

Visitano il forum: Marius44 e 9 ospiti