< návrat zpět

MS Excel


Téma: VBA - Hledání a výpis hodnot na základě rozdílu rss

Zaslal/a 2.3.2017 19:32

Prosím o radu, jak zprovoznit následující:
V sešitu jsou 2 listy. Na listu 1 jsou správné hodnoty a na listu 2 skutečně získané.

Potřebuji nasměrovat, jak vytvořit makro, aby výstupem byl nalezený rozdíl takto:
Prohledá oblast, v tomto případě A1:E6 a najde rozdíl. Ve výsledném listu (nebo novém sešitu)
vypíše na každý řádek nalezený rozdíl. zde by to vypadalo takto:

Pavel - 2.3.2017 mělo být 1, uvedl 0
Martin - 3.3.2017 mělo být 0, uvedl 1

Najde se tu dobrá duše, která s tím poradí?
Předem děkuji.

Příloha: xlsx35234_hledani-rozdilu.xlsx (10kB, staženo 36x)
Zaslat odpověď >

#035236
avatar
Nebylo by lepší to udělat přes vzorce?
Vytvořím třetí list, který bude stejný jako List1 a List2, a zde dám jednoduché ověření přes funkci KDYŽ.
P.

Např.:
=KDYŽ(List1!B2=List2!B2;"OK";"Chyba")citovat
#035237
avatar

Pavlus napsal/a:

Nebylo by lepší to udělat přes vzorce?

Když já bych potom potřeboval dále pracovat s odhalenými rozdíly, které budou na řádkách pod sebou. Každý řádek jedna zjištěná nesrovnalost.citovat
#035241
avatar
Jeden z nástřelů možného řešení.
P.

Viz příloha:
Příloha: xlsx35241_hledani-rozdilu-reseni.xlsx (18kB, staženo 38x)
citovat
#035242
avatar
Děkuji, vypadá to zajímavě. Sice stále budu usilovat o VBA, ale překvapivě to funkci plní. Díky moccitovat
#035244
avatar
Řešení makrem pro výpis na List3:
Sub Hledani_a_vypis_rozdilu()
Dim i As Long
Dim j As Long
Dim radek As Long

radek = 1

Sheets(List3.Name).Range("A1:A1000").ClearContents

For i = 2 To 6
For j = 2 To 5
If Sheets(List1.Name).Cells(i, j) <> Sheets(List2.Name).Cells(i, j) Then
Sheets(List3.Name).Cells(radek, 1).Value = Sheets(List1.Name).Cells(i, 1) & " - " _
& Application.WorksheetFunction.Text(Sheets(List1.Name).Cells(1, j), "d.m.yyyy") & " mělo být " & _
Sheets(List1.Name).Cells(i, j) & ", uvedl/a " & Sheets(List2.Name).Cells(i, j)

radek = radek + 1
End If
Next j
Next i

End Sub
P.citovat
#035245
elninoslov
Pr.

EDIT: kolega bol rýchlejší 1
Příloha: zip35245_35234_hledani-rozdilu.zip (19kB, staženo 38x)
citovat
#035247
avatar
Pánové, smekám.
Šlo by nějak ošetřit, aby se měnil text v listu výsledek v závislosti na tom, zda místo 0 byla 1 a obráceně?
Tedy pokud měla být 0 a je 1 pak se výsledek bude skládat ze Jména+datum+ text1

a pokud měla být 1, ale byla 0 pak výsledek bude složen z Jména+datum+ text 2 ?citovat
#035254
elninoslov
Treba lepšie špecifikovať, čo znamená Text1 a Text2. Či sa to nadeklaruje ako konštanta, alebo to má byť počítaný text. Pridal som Vám to tam, prípadne si to rozložte na viac riadkov, alebo do klasického IF THEN, alebo SELECT CASE. Problém ale je, či budú hodnoty skutočne iba 0 a 1. To treba presne špecifikovať, inak to nebude fachať...
Příloha: zip35254_35234_hledani-rozdilu.zip (21kB, staženo 37x)
citovat

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