zkombinování dat bez duplicit

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

janca
nováček
Příspěvky: 1
Registrován: únor 15
Pohlaví: Nespecifikováno
Stav:
Offline

zkombinování dat bez duplicit

Příspěvekod janca » 05 úno 2015 20:08

Poradí mi prosím někdo funkci, která by zkombinovala data z ,,Listu1" a ,,Listu2" bez duplicit na ,,List3". Na ,,Listu3" by tedy měly být uvedeny všechny data, které se vyskytly na jakémkoli listu (List1 a List2) a to bez duplicit.
Kdykoliv, kdy napíšu něco do 1. nebo 2. listu, tak se mi to promítne na 3. list a budou tam pouze originální (ne duplicitní) hodnoty. Všechno bude automatizované a pro libovolný počet položek.
Děkuju :)
Přílohy
Sešit1.xlsx
(10.61 KiB) Staženo 23 x
Sešit1.xlsx
(10.61 KiB) Staženo 19 x

Reklama
Uživatelský avatar
eLCHa
Level 1
Level 1
Příspěvky: 72
Registrován: duben 10
Bydliště: Ostrava
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: zkombinování dat bez duplicit

Příspěvekod eLCHa » 09 úno 2015 14:09

Poněkud nejasné zadání a proto dlouho bez odpovědi.
Na ukázku:
pracuje při změně dat na List1 nebo List2 pouze ve sloupci A - sledovat celé listy by bylo poněkud komplikovanější.
Do modulu sešitu (obvykle ThisWorkbook) vložte

Kód: Vybrat vše

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Const sDEL As String = "#"
  Dim bActualize As Boolean
  bActualize = Sh.Name = List1.Name And Target.Column = 1
  If Not bActualize Then
    bActualize = Sh.Name = List2.Name And Target.Column = 1
  End If
  If bActualize Then
    With List3.Cells(1)
    .CurrentRegion.Columns(1).ClearContents
   
    Dim sVals As String
    sVals = Join(Application.Transpose(List1.UsedRange.Columns(1).Value), sDEL)
    sVals = sVals & sDEL & Join(Application.Transpose(List2.UsedRange.Columns(1).Value), sDEL)
   
    With .Resize(Len(sVals) - Len(Replace(sVals, sDEL, vbNullString)) + 1, 1)
    .Value = Application.Transpose(Split(sVals, sDEL))
    .RemoveDuplicates Columns:=1, Header:=xlNo
    .Sort Key1:=.Cells(1), Header:=xlNo, SortMethod:=xlPinYin
    End With '.Resize(Len(sVals) - Len(Replace(sVals, sDEL, vbNullString)) + 1, 1)
    End With 'List3.Cells(1)
  End If
End Sub
eL CHá ;)

Kdo hledá, najde. Jenom je třeba hledat pořádně. Zkuste tohle- opravdu to funguje ;)
No vidíš, když se díváš pořádně, tak jedou ;)


Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů