< návrat zpět

MS Excel


Téma: VBA - porovnání názvů hodnot ve sloupci rss

Zaslal/a 19.9.2012 15:14

Ahoj,

chtěl bych poprosit o rozhřešení či navedení jak vyřešit následující problém pomocí VBA.

Mám tabulku, kde mám dva sloupce, ve sloupci B se nachází jména prvků a ve sloupci C jména prvků i s elementy.

Potřebuji provést kontrolu ve sloupci C, která spočívá v tom, že jméno prvku, které je ve sloupci B odpovídá jménu prvku/ům pro daný řádek ve Sloupci C a to bez ohledu na Element.

Tzn. hodnota String.String.Prvek1 ve sloupci B má být stejná i ve sloupci C to je String.String.Prvek1.Element1.

V dalším oddíle (oddíly jsou zeleně odděleny a obsahují jedinečné názvy prvků ve sloupci B, ale pouze jeden pro daný oddíl) to je, že hodnota String.String.Prvek2 ve sloupci B odpovídá hodnotám ve Sloupci C pro všechny řádky -> String.String.Prvek2.Element1, String.String.Prvek2.Element2, String.String.Prvek2.Element3 atd. stejné je tomu i v dalších oddílech...

stručně řečeno má jít o kontrolu, zda jméno prvku ve sloupci B je identické s jménem/jmény prvků ve sloupci C pro daný oddíl, ve kterém se nachází jedinečné jméno prvku. Rozsahy nejsou staticky dány...

viz obrázek.

velmi prosím o pomoc, jak na to.

předem všem děkuji za konstruktivní odpovědi

Příloha: jpg9539_excel.jpg (56kB, staženo 52x)
9539_excel.jpg
Zaslat odpověď >

#009540
Jeza.m
Za předpokladu že ve sloupci B budeš mít prvek rozkopírován všude, tak lze použít porovnávání:
=KDYŽ(B3=ZLEVA(C3;DÉLKA(B3));"OK";"NOK")
M@citovat
#009544
avatar
děkuju,

a jak na to s VBA?citovat
#009546
Jeza.m
více způsoby :-).
1) makrem v cyklu dosadit zmíněný vzorec
2) napsat si vlastní funkci a použít tuto
3) projet to v cyklu makrem a stejným způsobem porovnat hodnoty pomocí VBA a zapsat statický výsledek.


if cells(radek,sloupec) = left(cells(radek,sloupec+1),len(cells(radek,sloupec))) then cells(radek,sloupec+3)="OK" else cells(radek,sloupec+3)="NOK"
citovat
#009548
avatar
a jak porovnat dejme tomu radky 12 az 23 ve sloupci C podle radku 11 ve sloupci B -> to same treba i u radku 8,9 ve sloupci C podle radku 7 ve sloupci B viz obrcitovat
#009552
Jeza.m
příklad v příloze.


Public Sub kontrola()
Dim rd As Single
Dim sl As Single
Dim jmeno As String

rd = 5 ' první řádek
sl = 2 ' první sloupec

Do While Cells(rd, sl + 1) <> "" Or Cells(rd + 1, sl + 1) <> ""
If Cells(rd, sl) <> "" Then jmeno = Cells(rd, sl)
If Cells(rd, sl + 1) <> "" Then
If Left(Cells(rd, sl + 1), Len(jmeno)) = jmeno Then Cells(rd, sl + 2) = "OK" Else Cells(rd, sl + 2) = "NOK"
End If

rd = rd + 1
Loop

End Sub


M@
Příloha: zip9552_kontrola_prvku.zip (8kB, staženo 31x)
citovat
#009553
avatar
děkuju ti mockrát za pomoc!!! 1
velmi jsi mi pomohlcitovat
#009777
avatar
chtěl bych poprosit ještě o radu, rozšíření stávajícího kódu jak na duplicitní záznamy,

respektive mezi řádky 7 až 9 ve sloupci C se může objevit pouze jednou např: String.String.Prvek2.Element1, zde hraje pouze roli kontrola elemetu1, to samá platí pro ostatní elementy 1 až 3

v řádcích 11 až 23 kontrola taktéž elementů 1 až 13, elementy nesmí býti duplicitní.

pzn. všechny elementy nejsou staticky dány, může jich být i tisíc.

prosím o raducitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje