Excel: problema formatare celule prin VBA
Last Updated: Aug 04 2020 12:16, Started by
DannyBOHLEN
, Jul 28 2020 17:12
·
0

#1
Posted 28 July 2020 - 17:12

Salutare tuturor,
Am o problema si nu o pot rezolva: Am un tabel (spre exemplu) cu 3 coloane si un numar variabil de linii: - in Coloana1, se gasesc valori, pe numar diferit de linii, dar ce sunt ordonate, adica am pe primele 60 de linii valoarea ”001”, urmatoarele 35 linii cu valoarea ”002”, s.a.m.d. .... - in Coloana2, se gasesc aceleasi tipuri de valori (TEXT), insa ce nu sunt in ordine. Adica, se pot intalni, pe aceeasi linie, ”combinatii” intre prima si a doua coloana dupa cum urmeaza: - ”001” ”001” ”” - ”001” ”002” ”x” - ”001” ”003” ”x” - ”001” ”001” ”” - ”001” ”004” ”x” - ”002” ”001” ”x” - ”002” ”003” ”x” - ”002” ”001” ”x” - ”003” ”002” ”x” - ”003” ”003” ”” - in Coloana3, se gasesc valori (TEXT), doar in cazul in care sunt gasite diferente, pe aceeasi linie, intre valorile dintre coloanele 1 si 2, in rest, celulele respective nu contin absolut nimic. Cu alte cuvinte, ”x”-ul de pe coloana 3 atrage atentia ca s-au gasit diferente intre primele doua coloane; Acum, ceea ce as vrea sa obtin: - celulele de pe Coloana3, in cazul in care sunt marcate cu ”x”, deci, au fost diferente intre valorile dintre Coloana1 si Coloana2, sa fie colorate pe fond; - pentru toate diferentele de valoare, in care valoarea de pe Coloana1 este aceeasi, in functie de numarul de combinatii de valoare pe Coloana2, coloana3 sa aiba aceeasi culoare, indiferent de numarul liniei, ADICA: - daca, in conditiile in care celula de pe valoarea de pe Coloana1, contine valoarea ”001”, iar prima diferenta de valoare de pe Coloana2 a fost ”003”, atunci, pentru orice combinatie de valori ”001”-”003”, Coloanei 3 sa ii fie atribuita culoarea GALBENA, indiferent de numarul liniei din tabel ! Pentru urmatoarea combinatie de valori (”001”-”002”), Coloanei 3 sa ii fie atribuita urmatoarea culoare VERDE, etc. - atunci cand valoarea de pe Coloana1 se schimba, iar in tabel sunt gasite diferente in raport cu valorile de pe Coloana2, sa se reia folosirea acelui set de culori: pentru prima combinatie - prima culoare (galbena), pentru a 2-a combinatie - a 2-a culoare (verde), etc. - eventual, culorile ce vor fi folosite, sa fi fost deja prestabilite ori salvate intr-o lista, etc. - exista posibilitatea ca, intre valorile de pe Coloana1 si Coloana2, sa nu fie gasite diferente de valoare, deci pe Coloana3 nu va fi regasit ”x”-ul, si implicit, nicio culoare; - Numarul maxim de combinatii de valoare intre primele doua coloane este variabil si totodata limitat la maxim de 10 (sa zicem). Deci nu am nevoie decat maxim 10 culori pentru coloana a 3-a. Exemplu in imaginea atasata! Am incercat prima data sa fac procedura asta in VBA (pt ca as mai fi adaugat si alte chestii), insa ”nu mi-a iesit de nicio culoare”. ![]() Am incercat cu array, list, s.a., fara niciun rezultat! Va rog, dati-mi un sfat cum sa trec peste asta ! P.S. - sper ca m-am facut inteles. Va Multumesc! Attached Files |
#3
Posted 28 July 2020 - 19:45

If cell from column A is "001" AND cell from column C is "x" then cell in colmn C has background color "red"
![]() Edited by radurus, 28 July 2020 - 19:46. |
#4
Posted 29 July 2020 - 21:49

If cell from column A is "001" AND cell from column C is "x" then cell in colmn C has background color "red" ![]() Nu merge !!! Pentru mine e foarte important ca toate calculele sa se faca, in primul rand, in raport de coloanele 1 si 2. Coloana 3, cu semnul X, e doar un ajutor. Plus ca eu am nevoie de o paleta de 10 culori. In raport cu valoarea de pe coloana 1, valoarea de pe coloana 2 poate sa apara pe diferite linii. In cazul in care, la PRIMA DIFERENTA gasita, valoarea coloanei 1 este aceeasi, iar valoarea coloanei 2 este A, atunci valoarea aflata pe coloana 3, indiferent pe ce linie se afla, in speta X-ul, sa aiba aceeasi culoare. Deci, cu alte cuvinte, combinatia ValoareColoana1/ValoareColoana2, indiferent de numarul liniei, sa aiba aceeasi culoare. Atasat este o captura de ecran. Mutumesc pentru raspuns! |
#5
Posted 03 August 2020 - 10:42

Hallo tuturor,
stiu ca nimeni nu e obligat sa raspunda la ”provocari” pe forum, ..., dar nimeni nu ma poate ajuta ???? Sunt un pic presat de timp ! Va multumesc ! |
#6
Posted 03 August 2020 - 12:35

Am incercat eu sa fac conditie combinata conform tutorialelor dar nu functioneaza asa cum scrie acolo.
O cauza cred ca este semnul folosit pentru separarea operatorilor. Peste tot pe net apare "," dar mie imi da eroare. Am folosit ";" si nu mai da eroare dar nu functioneaza asa ca in reclama. Problema cu simbolul separator este ca sistemul meu si la job sunt setate ca la regional settings ca european unde "," e separator zecimal si "." separator pentru mii. Majoritatea solutiilor, tutoriale sunt dn limba engleza (americani) cu "." setat ca separator zecimal si toate diferentele ce survin de aici. Vezi daca te ajuta asta. https://www.got-it.a...th-2-conditions Edited by radurus, 03 August 2020 - 12:37. |
#7
Posted 03 August 2020 - 20:50

radurus .....
Am citit. Din punctul asta de vedere, in momentul asta imi este f clar. Problema mea e cu totul ALTA! Pt orice combinatie intre valoarea dintre valoarea dintre coloana 1 si coloana 2, sa am o ”reactie” pe coloana 3. Ca si element (ajutator), aceasta este ”marcata”. Din moment ce valoarea de pe coloana 1 se schimba, numarul combinatiilor de valori intre coloanele 1 si 2, sa porneasca de la ZERO in ceea ce priveste modificarile ce vor fi aduse pe coloana 3. Deci, atat timp timp cat pe coloana 1, INDIFERENT de numarul liniei, am valoarea ”001”, iar pe coloana 2, INDIFERENT de numarul liniei, am valoarea ”002”, pe coloana 3 corespondenta liniei respective, sa am CULOAREA1 (rosie, spre ex.), neavand importanta numarul liniei sau ori de cate ori aceasta combinatie de valori (”001” / ”002” se repeta) si linia unde aceasta poate fi intalnita. Daca valoarea de pe coloana 1 se schimba, atunci o luam de la inceput ...... Linia X: Coloana 1 ... valoarea ”002” ... Coloana 2 ... valoarea ”002” >>>> coloana 3 nu este afectata Linia X+1: Coloana 1 ... valoarea ”002” ... Coloana 2 ... valoarea ”002” >>>> coloana 3 nu este afectata Linia X+2: Coloana 1 ... valoarea ”002” ... Coloana 2 ... valoarea ”004” >>>> coloana 3 primeste Culoarea 1 - salvata in prealabil Linia X+3: Coloana 1 ... valoarea ”002” ... Coloana 2 ... valoarea ”002” >>>> coloana 3 nu este afectata Linia X+4: Coloana 1 ... valoarea ”002” ... Coloana 2 ... valoarea ”001” >>>> coloana 3 primeste Culoarea 2 - salvata in prealabil Linia X+5: Coloana 1 ... valoarea ”002” ... Coloana 2 ... valoarea ”004” >>>> coloana 3 primeste Culoarea 1 - salvata in prealabil, * aceeasi ca si in cazul liniei X+2 Linia X+5: Coloana 1 ... valoarea ”002” ... Coloana 2 ... valoarea ”001” >>>> coloana 3 primeste Culoarea 2 - salvata in prealabil, * aceeasi ca si in cazul liniei X+4 ... s.a.m.d. Sincer sa fiu, nu stiu in ce masura acest lucru va fi putut fi rezolvat prin ”conditional formating” ! De aceea, cu toate ca poate fi mai simplu, aceasta problema ar putea avea o rezolvare in VBA, cu mult mai avantajoasa intrucat pot fi mult mai multe operatiuni adaugate!!! Va rog, sper sa pot fi inteles, dar am nevoie de ajutor !!! Nu cred ca e imposibil, insa nu ii dau de cap !!!!!!!! Va multumesc tuturor pentru timpul si rabdarea voastra ! |
#8
Posted 03 August 2020 - 22:54

Cate valori ai? 001, 002.... 00n?
Daca ai 10 valori atunci faci 10 reguli cu conditii duble. Repet. In coloana 3 deja pui formula: daca coloana 1 = coloana 2, coloana 3 = " " else, "x". Adica atunci can coloana 1 e diferita de coloana 2 avem un x. Apoi conditional formatting se face exact cum am mai spus: Daca coloana1 = "001" si coloana3 ="x", coloana 3 fundal = rosu. Daca coloana1 = "002" si coloana3 ="x", coloana3 fundal = verde. s.a.m.d. pana la 10. Formatarea conditionala nu o faci pentru o celula ci pentru coloana sau range din coloana. Deci faci 10 reguli cu conditii duble pentru coloana3 Trebuie sa verifici daca iti merge o regula si apoi incerci cu 2. Mie nu mi-a mers. Adica sintaxa era corecta dar celula din coloana 3 nu s-a colorat. Ai grija sa formatezi celulele ca text. Edited by radurus, 03 August 2020 - 22:59. |
#9
Posted 04 August 2020 - 12:16

Cate valori ai? 001, 002.... 00n? Daca ai 10 valori atunci faci 10 reguli cu conditii duble. ,,, Ai grija sa formatezi celulele ca text. A mers. De coloana 3 nu m-am legat. E oricum doar o atentionare ca va trebui sa aiba o culoare de fond. Am sa incerc sa transpun totul in VBA, doarece, valorile de pe coloanele 1 si 2 sunt pe o scara de la 1 la 100 (si poate depasi aceasta valoare), iar combinatiile pot fi multiple. Doar cu Conditional Format ar trebui sa scriu 100 de conditii, ceea ce nu e foarte elegant, chiar daca imi fac treaba. Cu VBA poate reusesc sa-l fac mai dinamic. Adica, memorez valoarea de pe coloana 1 si o compar cu valoarea de pe coloana 2: - daca nu sunt diferente => sterg culoarea de pe coloana 3 (asta pt a preintampina o eventuala eroare), - daca sunt diferente => va trebui sa atribui o culoare pentru tot unde se gasesc aceasta combinatie. Dar na, macar am prrins ideea! Multumesc foarte mult pentru inspiratie ! |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users