Valoare unica pe coloana

Informatii despre cum se utilizeaza Microsoft Excel 2007. Calcule, Formule, Functii, Tabele pivot, Analiza datelor, etc
Închis
MrExcel
Mesaje: 106
Membru din: Mar Feb 23, 2010 11:09 pm

Valoare unica pe coloana

Mesaj de MrExcel » Dum Apr 04, 2010 11:08 pm

Cum pot face sa fiu sigur ca pe o coloana nu se introduc mai multe valori identice? Concret, am o coloana cu “unique identifiers” care trebuie sa indentifice in mod unic fiecare linie. Eventual, daca mi-ati putea spune daca se poate genera automat o valoare care sa fie unica pe acea coloana.

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Valoare unica pe coloana

Mesaj de Dr.Windows » Mar Apr 06, 2010 9:36 am

Acea valoare "unica" trebuie sa respecte niste reguli (de ex. intotdeauna sa fie formata din X cifre sau sa fie de genul GUID) sau pur si simplu un fel de "AUTONUMBER" pornind de la 1,2,3... N?...

MrExcel
Mesaje: 106
Membru din: Mar Feb 23, 2010 11:09 pm

Re: Valoare unica pe coloana

Mesaj de MrExcel » Mar Apr 06, 2010 9:44 am

Nu trebuie sa respecte anumite reguli. Important e sa fie unica pe acea coloana.

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Valoare unica pe coloana

Mesaj de gecs » Mar Apr 06, 2010 10:44 am

Ca valoarea nou introdusa pe o coloana sa fie unica, va trebui ca presupusa noua valoare sa fie comparata mai intai cu toate valorile deja existente pe coloana respectiva. Daca aceasta comparatie (posibila, dealtfel) se face printr-o formula, inserarea sau stergerea unor randuri deja completate din tabelul respectiv ar duce la alterarea (modificarea) valorilor deja existente in acel tabel. Rezulta de aici ca prin formule este exclusa rezolvarea problemei, pentru ca banuiesc ca se doreste pastrarea integritatii valorilor existente pe acea coloana din motive de relationare cu informatiile din celelalte coloane, dar de pe acelasi rand.

Ramane de discutat cum s-ar rezolva o asemenea problema prin vba. In orice caz nu poate fi vorba de o functie scrisa in vba si apelata din foaia de calcul precum o formula, pentru ca ar avea soarta unei formule "standard", solutie demonstrata ca imposibila mai sus. Probabil ca ar fi posibila o procedura declansata de evenimentul "Change" al foii respective, dar nu vad posibila implementarea unei asemenea proceduri fara ca valorile unice sa fie pe o coloana parte a unui tabel (nu un range). Procedura respectiva ar trebui sa previna si modificarea unei valori existente pe coloana unde dorim valori unice, pentru a pastra valoarea asignata anterior de aceeasi procedura si ar trebui sa asigneze automat o valoare unica (comparand aceasta valoare mai intai cu valorile existente de pe coloana respectiva) doar in cazul in care celula de pe coloana monitorizata nu contine vreo valoare (la extinderea automata a tabelului, sau la inserarea de randuri in tabel). Cred ca prevenirea modificarii unei valori de pe coloana monitorizata nu se poate face decat salvand valorile din acea coloana intr-un array si la deschiderea fisierului si la orice modificare a lor prin procedura imaginata in evenimentul "Change".

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Valoare unica pe coloana

Mesaj de Dr.Windows » Mar Apr 06, 2010 10:54 am

Atunci se poate face ceva de genul asta:

1. Presupunem ca avem un tabel cu 2 coloane: Nr. Crt. si Nume (incepand cu celula A1 si exact in ordinea mentionata)
2. Se presupune ca vom avea cel putin o linie de completat asa ce celuna A2 va avea inscrisa valoarea 1
3. Incepand cu celula A2 putem sa scrie formula: =IF(ISBLANK(B3),"",A2+1) ce se poate copia "in jos" pana unde este nevoie
4. Pe masura ce se vor completa randurile de pe coloana B vor apare numele de ordine care sigur vor fi unice.

NOTE:
- Coloana A trebuie sa fie protejata pentru ca cineva sa nu modifice din gresala formula
- nu trebuie sa existe randuri goale pe coloana B altfel va apare eroarea #VALUE pe coloana de "Nr. Crt."

Pentru exemplificare am pus si un fisier atasat, unde celulele marcate cu galben se vor "auto completa" pe masura ce apar valori in coloana B
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Valoare unica pe coloana

Mesaj de Dr.Windows » Mar Apr 06, 2010 11:02 am

O alta idee ca sa nu fii nevoie sa se completeze randuri succesive, si daca numarul "unic" trebuie sa fie doar unic si atat fara alte conditii se poate face o foruma asemanatoare exemplului de mai sus dar bazata doar pe functia ROW() a randului - mai exact: =IF(ISBLANK(B2);"";ROW()) - astfel ca vei avea valori unice acolo unde se completeaza ceva pe coloana B dupa cum se poate vedea si in fisierul atasat:
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Valoare unica pe coloana

Mesaj de gecs » Mar Apr 06, 2010 11:11 am

lucian scrie:Atunci se poate face ceva de genul asta:

1. Presupunem ca avem un tabel cu 2 coloane: Nr. Crt. si Nume (incepand cu celula A1 si exact in ordinea mentionata)
2. Se presupune ca vom avea cel putin o linie de completat asa ce celuna A2 va avea inscrisa valoarea 1
3. Incepand cu celula A2 putem sa scrie formula: =IF(ISBLANK(B3),"",A2+1) ce se poate copia "in jos" pana unde este nevoie
Daca in B3 ai o formula care returneaza sirul vid "", ISBLANK() va returna FALSE.
lucian scrie:4. Pe masura ce se vor completa randurile de pe coloana B vor apare numele de ordine care sigur vor fi unice.

NOTE:
- Coloana A trebuie sa fie protejata pentru ca cineva sa nu modifice din gresala formula
- nu trebuie sa existe randuri goale pe coloana B altfel va apare eroarea #VALUE pe coloana de "Nr. Crt."

Pentru exemplificare am pus si un fisier atasat, unde celulele marcate cu galben se vor "auto completa" pe masura ce apar valori in coloana B
Pai daca stergi un rand se modifica toate valorile de la randul sters in jos, sau da eroare... :( Daca protejezi coloana nu mai poti sterge randuri din foaia respectiva.

Avatar utilizator
gecs
Moderator
Moderator
Mesaje: 2311
Membru din: Sâm Aug 15, 2009 10:05 am
Localitate: Bucuresti

Re: Valoare unica pe coloana

Mesaj de gecs » Mar Apr 06, 2010 11:18 am

Daca nu se doreste completarea automata a valorilor unice si acestea se vor completa "de mana", e posibila instituirea unei reguli in Data Validation pentru coloana respectiva.

Se selecteaza coloana A -> Data -> Data Validation... -> la "Allow:" se alege din lista "Custom" -> la "Formula:" se foloseste formula:

Cod: Selectaţi tot

=IF(ROW()=1,ISNUMBER($A1),AND(ISNUMBER($A1),SUMPRODUCT(--($A:$A=$A1))=1))
Formula de mai sus nu va permite decat introducerea de numere unice pe coloana A.

Chiar daca se sterg sau se insereaza randuri in range-ul care intereseaza, regula de validare va functiona, dar valorile existente pot fi modificate manual.

L.E. formula de mai sus poate functiona foarte bine si fara IF:

Cod: Selectaţi tot

=AND(ISNUMBER($A1),SUMPRODUCT(--($A:$A=$A1))=1)
si nu va permite introducerea valorii 0 pentru ca portiunea din formula cu SUMPRODUCT va returna un rezultat >1, celulele "blank" fiind convertite la valoarea 0 de catre SUMPRODUCT.

Închis

Înapoi la “Intrebari despre Excel 2007”