Condividi:        

[EXCEL 2003] valore ad una cella verificando due condizioni

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

[EXCEL 2003] valore ad una cella verificando due condizioni

Postdi valetremo » 28/01/15 14:59

Ciao a tutti, sono convinta che sia un problema di facilissima soluzione, mi manca solo un passaggio ma non riesco a venirne a capo.
Ho un foglio di lavoro nel quale ho 6 colonne di dati: devo operare un confronto tra 4 colonne, ovvero verificare che il contenuto di due celle adiacenti nelle prime due colonne, sia uguale al contenuto di due celle adiacenti nelle altre colonne: se questa condizione è verificata, scrivere un valore nella cella di fianco. Vi metto un esempio:

nella colonna A Pippo i valori vengono confrontati con la colonna G Minnie
i valori della colonna B Topolino con la colonna H paperoga
Il risultato che voglio ottenere è di scrivere nella colonna C pluto i valori della colonna I Paperone

A-B-C-D-E-F-G-H-I
Pippo-Topolino-Pluto---Minnie-Paperoga-Paperone
10-20------10-20-A
10-20------14-34 GH
10-20------15-76 TR
14-34------14-20 pprr
14-34------------------
15-76------------------
15-76--------------
15-76----------------
15-76-----------------
14-20----------
14-20------------
14-20-----------------


Alla fine dell'operazione nella colonna C in questo caso otterrei:
A
A
A
GH
GH
TR
TR
TR
TR
pprr
pprr
pprr

Devo scrivere il valore dalla colonna I nella C solo quando sia la colonna G e H sono uguali alle colonne A e B (devono essere veri entrambi i valori contemporaneamente)

Ho scritto questa formula:

Codice: Seleziona tutto
=SE(E(CERCA.VERT(A2;G:I;1;VERO);CERCA.VERT(B2;G:I;2;VERO));"yuuuuh";"nooo")


riesco quindi a verificare che entrambe le cose siano vere contemporaneamente, ma al posto di yuuhh dovrei scrivere una formula che indichi di copiare il valore giusto dalla colonna I alla corrispettiva colonna C

Grazie
valetremo
Utente Junior
 
Post: 20
Iscritto il: 30/06/14 17:11

Sponsor
 

Re: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi ricky53 » 28/01/15 16:06

Prova con la funzione CONFRONTA in cui concateni le due colonne da cercare. Sono con il cell e non posso scrivere bene. A dopo
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi Anthony47 » 28/01/15 22:48

Mi permetto di dire che i dati forniti da esempio sono illeggibili, prova ad allegare almeno una immagine (vedi viewtopic.php?f=26&t=80395#p466013), e che si possano leggere le coordinate delle celle.

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

Re: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi Flash30005 » 29/01/15 02:27

Inserisci in un modulo questa macro
modifica dove indicato con '<<<< il nome del foglio origine dati e del nome destinazione, attuale Foglio1 e Foglio2
Codice: Seleziona tutto
Sub TraslaDati()
WF1 = "Foglio1"  '<<< cambia qui il nome del foglio origine dati
WT1 = "Foglio2"  '<<< cambia qui il nome del foglio Destinazione
Worksheets(WT1).Cells.Clear
URF1 = Worksheets(WF1).Range("G" & Rows.Count).End(xlUp).Row
URA1 = Worksheets(WF1).Range("A" & Rows.Count).End(xlUp).Row
For RF1 = 2 To URF1
    ValG = Worksheets(WF1).Range("G" & RF1).Value
    ValH = Worksheets(WF1).Range("H" & RF1).Value
    ValI = Worksheets(WF1).Range("I" & RF1).Value
    For RF2 = 2 To URA1
        ValA = Worksheets(WF1).Range("A" & RF2).Value
        ValB = Worksheets(WF1).Range("B" & RF2).Value
        If ValG = ValA And ValH = ValB Then
            URT1 = Worksheets(WT1).Range("A" & Rows.Count).End(xlUp).Row + 1
            Worksheets(WT1).Range("A" & URT1).Value = ValI
        End If
Next RF2
Next RF1
Worksheets(WT1).Select
End Sub


avvia la macro
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: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi valetremo » 29/01/15 09:33

Ecco il file con le prove (macro esclusa adesso la provo):

http://www.filedropper.com/cercavertpic ... arisolvere



EDIT: partendo dal foglio che ho allegato ho modificato la macro in questo modo:

Codice: Seleziona tutto

Sub TraslaDati2()
WF1 = "Foglio2"  '<<< cambia qui il nome del foglio origine dati
URF1 = Worksheets(WF1).Range("A" & Rows.Count).End(xlUp).Row
URA1 = Worksheets(WF1).Range("D" & Rows.Count).End(xlUp).Row
For RF1 = 2 To URF1
    ValA = Worksheets(WF1).Range("A" & RF1).Value
    ValB = Worksheets(WF1).Range("B" & RF1).Value
    ValF = Worksheets(WF1).Range("F" & RF1).Value
    For RF2 = 2 To URA1
        ValD = Worksheets(WF1).Range("D" & RF2).Value
        ValE = Worksheets(WF1).Range("E" & RF2).Value
        If ValA = ValD And ValB = ValE Then
            URT1 = Worksheets(WF1).Range("E" & Rows.Count).End(xlUp).Row + 1
            Worksheets(WF1).Range("E" & URT1).Value = ValC
        End If
Next RF2
Next RF1
End Sub





Facendo il debug le variabili assumono i valori giusti, ma lanciandola al foglio non viene applicata alcuna modifica.
valetremo
Utente Junior
 
Post: 20
Iscritto il: 30/06/14 17:11

Re: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi ricky53 » 29/01/15 11:34

Ciao,
stavo per proporti una soluzione con "CONFRONTA" ma ho visto che avevi inserito un file e l'ho scaricato.
il file inviato ha la struttura dati diversa da quanto avevi (consentimelo, in modo molto confuso) esposto nel tuo intervento iniziale, quindi, con queste "DIVERSE" condizioni non posso proporti più nulla.


Comunque dovresti inviare un NUOVO FILE con:
A) i dati iniziali posti nel "Foglio1"
B) quello che vorresti ottenere posto nel "Foglio2".

Alla luce dei dati è utile che tu descriva nuovamente (passo passo e per punti) cosa ti occorre.

In questo modo saremo SICURAMENTE in grado di aiutarti !



Per informazione: la macro di FLASH scrive i dati nel "Foglio2" e quanto ottieni con questa macro è lo stesso risultato che ti stavo per proporre io con una formula.

CONTROLLA BENE il contenuto del "FOGLIO2" !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi valetremo » 29/01/15 15:27

Ciao ricky, le colonne le ho invertite per provare la soluzione con il confronta, visto che non mi funzionava, ma possono essere rimesse come nel primo messaggio (file nuovo allegato, pulito senza macro, senza formula con confronta).

http://www.filedropper.com/cercavertpic ... solverebis

Se c'è una soluzione funzionante con il CONFRONTA sarei interessata a capire perchè a me non va (ho riprovato le formule sul foglio nuovo allegato ma continua a uscire sempre come valore l'intestazione delle colonne, nel caso "paperone")


La macro che ho provato non funziona all'ultimo passaggio, URT1 assume il valore 13 (che ho visto coincidere con la prima riga vuota della colonna topolino) e poi non scrive nulla. Ho provato sia a metterlo come modulo che direttamente nel foglio.


EDIT:
nel mentre che scrivevo sono riuscita a far funzionare la macro di flash (che ringrazio) modificando il codice in questo modo (sulla base del foglio nuovo allegato a questo messaggio):

Codice: Seleziona tutto

Sub TraslaDati()
    WF1 = "dati di partenza"  '<<< cambia qui il nome del foglio origine dati
    WT1 = "Foglio3"  '<<< cambia qui il nome del foglio Destinazione
    'Worksheets(WT1).Cells.Clear
    URF1 = Worksheets(WF1).Range("G" & Rows.Count).End(xlUp).Row
    URA1 = Worksheets(WF1).Range("A" & Rows.Count).End(xlUp).Row
    For RF1 = 2 To URF1
        ValG = Worksheets(WF1).Range("G" & RF1).Value
        ValH = Worksheets(WF1).Range("H" & RF1).Value
        ValI = Worksheets(WF1).Range("I" & RF1).Value
        For RF2 = 2 To URA1
            ValA = Worksheets(WF1).Range("A" & RF2).Value
            ValB = Worksheets(WF1).Range("B" & RF2).Value
            If ValG = ValA And ValH = ValB Then
                URT1 = Worksheets(WF1).Range("C" & Rows.Count).End(xlUp).Row + 1
                Worksheets(WF1).Range("C" & URT1).Value = ValI
            End If
    Next RF2
    Next RF1
    'Worksheets(WT1).Select
    End Sub





Rimango interessata comunque anche alla soluzione con il CONFRONTA di ricky che non riesco invece a far funzionare
Ultima modifica di valetremo su 29/01/15 15:40, modificato 1 volte in totale.
valetremo
Utente Junior
 
Post: 20
Iscritto il: 30/06/14 17:11

Re: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi ricky53 » 29/01/15 15:36

Ciao,
prova comunque la soluzione di Flash.


Con le formule:
in "J2" scrivi
Codice: Seleziona tutto
=G2 & H2
e copi in basso

in "C2" scrivi
Codice: Seleziona tutto
=INDIRETTO("I" & CONFRONTA(A2 & B2; J$1:J$100; 0))
e copi in basso

Prova e ...



COMMENTO: con le intestazioni scritte nella prima riga ci "HAI BEN CONFUSO"

Dovevi utilizzare in "A" e in "G" lo stesso termine, stessa cosa per "B" e "H", "C" e "I"

Fai attenzione la prossima volta ... magari scrivendo le intestazioni effettive, con dati fittizi, avremmo capito subito !!!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi valetremo » 29/01/15 15:49

Ciao Ricky, anche la tua formula funziona alla perfezione.
Ho provato anche con i numeri con la virgola e pare non avere problemi.
Nel caso i dati non fossero ordinati potrebbe funzionare comunque?
valetremo
Utente Junior
 
Post: 20
Iscritto il: 30/06/14 17:11

Re: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi ricky53 » 29/01/15 15:58

Ciao,
si l'ordine non condiziona il "Confronta".

Già adesso in "A" con "B" e "G" con "H" hai dati NON ordinati.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi Flash30005 » 30/01/15 00:47

Mi sto ancora domandando come mai hai eliminato un foglio nel file se la macro ne prevede due?

e poi ti aspetti che tutto funzioni?

Se vuoi imparare credo che innanzi tutto debba seguire le istruzioni oppure sei il tipo che quando acquista un prodotto pensa che le istruzioni siano un optional?

allego il mio file originale con macro inserita (Versione 1)
spero che, una volta aperto, tu prema il pulsante "AVVIA" senza fare alcuna modifica

Download File versione 1

Download file versione 2 (secondo le ultime specifiche)

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: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi valetremo » 30/01/15 09:33

Flash30005 ha scritto:Mi sto ancora domandando come mai hai eliminato un foglio nel file se la macro ne prevede due?

e poi ti aspetti che tutto funzioni?

Se vuoi imparare credo che innanzi tutto debba seguire le istruzioni oppure sei il tipo che quando acquista un prodotto pensa che le istruzioni siano un optional?

allego il mio file originale con macro inserita (Versione 1)
spero che, una volta aperto, tu prema il pulsante "AVVIA" senza fare alcuna modifica

Download File versione 1

Download file versione 2 (secondo le ultime specifiche)

Ciao



Ciao Flash, spero il tuo messaggio sia solo una svista ;) la tua macro funziona perfettamente e l'ho adattata alle mie necessità (vedi mio messaggio precedente in cui scrivo che funziona, ne riporto il codice modificato e che ti ringrazio). L'ho modificata facendo scrivere i risultati sullo stesso foglio invece che in un nuovo foglio. Scarico comunque i tuoi file di esempio e ti ringrazio di nuovo

Ciao e buona giornata
valetremo
Utente Junior
 
Post: 20
Iscritto il: 30/06/14 17:11

Re: [EXCEL 2003] valore ad una cella verificando due condizi

Postdi Flash30005 » 30/01/15 13:38

Evidentemente si!
Ultimamente ho poco tempo da dedicare al Forum e leggo velocemente i post, mi concentro sull'esigenza specifica tralasciando cose di minor importanza per cercare velocemente una soluzione.

ma ho capito anche perché c'è stata questa svista, c'è stato un "accavallamento" di post tuo e di Ricky.
infatti, credo che, mentre effettuavi l'Edit (modifica del messaggio aggiungendo la soddisfazione di essere riuscita a far funzionare la macro), Ricky inviava il suo post dove ti consigliava di provare la mia soluzione e questo mi ha fatto pensare che non la utilizzavi perché non funzionante, leggendo il codice ho visto le "alterazioni" etc etc.

Portarle su unico foglio si può fare ma credo sia più pulito avere i dati origine su un foglio e l'elenco distribuito su un altro ma dipende sempre dall'esigenza.

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-


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL 2003] valore ad una cella verificando due condizioni":


Chi c’è in linea

Visitano il forum: Ricky0185 e 40 ospiti