< návrat zpět

MS Excel


Téma: Hladanie,kopirov-MAKRO rss

Zaslal/a 7.10.2011 2:22

Ahoj,
potreboval by som pomoct s makrom, ktore by vyhladalo vsetky hodnoty v stlpci napr. B, ktore by sa rovnali hodnote na pozicii A1. Tieto najdene hodnoty zo stlpca B rovnajúce sa hodnote A1 by následne skopirovali do druheho zosita do stlpca A.
A zase by pokracovalo v hladani v stlpci B ale uz s hladanou hodnotou A2 a tieto hodnoty by sa skopirovali do druheho harku do stlpca B, atd.

Ide o to ze hladanie by som ako tak zvladol, ale neviem ako nastavit aby si samo nacitalo hladanu hodnotu z bunky A1, ktoru by hladalo v celom stlpci B a naslo by to ale vsetky zhody nie len presne...a tieto zhody by skopirovalo niekde inde do druheho slpca a pokracovalo by to v hladani ale uz s dalsimi hladanymi hodnotami z buniek A2, A3....

Cize napr. bunka A1 bude obsahovat hodnotu "A"... a cely stlpec B bude naplneny nejakymi hodnotami napr.: "A", "AB", "FF", "HA", "FD", "CA", "AR", "GB", "BF"... a ja chcem aby vsetky hodnoty zo stlpca B, ktore obsahuju v tomto pripade hodnotu bunky A1 cize "A", sa prekopirovali do druheho zosita do stlpca A... cize vo vysledku budu v druhom zosite v stlpci A najdene hodnoty: "A", "AB", "HA", "CA"...
...a dalej ak bude v bunke A2 hodnota "B" tak aby sa tieto hodnoty zase vyhladali a prekopirovali sa do druheho zosita do stlpca B, cize vo vysledku budu v stlpci B v druhom zosite tieto hodnoty: "AB", "GB", "BF"... atd.

Neviem, ci som to dostatocne vysvetlil o co mi ide, ale dufam, ze ano... :)

Zaslat odpověď >

icon #006105
Poki
co takhle:
Sub hledat()
Dim i As Long
Dim j As Long
Dim S As String
Dim L As String
Dim Vysledek
S = ThisWorkbook.Name
L = ActiveSheet.Name
Workbooks.Add

For i = 1 To Workbooks(S).Worksheets(L).Cells(65000, 1).End(xlUp).Row
For j = 1 To Workbooks(S).Worksheets(L).Cells(65000, 2).End(xlUp).Row

Vysledek = InStr(1, Workbooks(S).Worksheets(L).Cells(j, 2), Workbooks(S).Worksheets(L).Cells(i, 1))
If Vysledek = 0 Then
Else
Workbooks(Workbooks.Count).Worksheets(1).Cells(1, i) = Workbooks(S).Worksheets(L).Cells(i, 1)
Workbooks(Workbooks.Count).Worksheets(1).Cells(Cells(65000, i).End(xlUp).Row + 1, i) = _
Workbooks(S).Worksheets(L).Cells(j, 2)
End If
Next j
Next i

With Workbooks(Workbooks.Count).Worksheets(1).Range(Cells(1, 1), Cells(1, i - 1))
.Font.Bold = True
.HorizontalAlignment = xlCenter
.Borders(xlEdgeBottom).LineStyle = xlContinuous
End With
End Sub
citovat
#006106
avatar
Dik Poki,
si proste SUPER! presne takto som to potreboval, este raz veeeelka vdaka :)

Este posledna otazocka... dalo by sa aby tie najdene hodnoty hodilo pekne pod seba, ale nie kazdu do novej bunky-noveho riadku, ale aby ich hodilo vsetky len do jednej bunky pod seba?citovat
icon #006107
Poki
No - zrovna nevim, jak bych to udelal (ale urcite by to nebyl problem), ALE to je neco, co bych rozhodne nedoporucoval, protoze se s tim pak uz neda nic delat - navic by zobrazeni bylo podobne.

Preferuji vzdy co zaznam, to bunka, protoze s takovyma informacema se da dal pracovat - to, co zadas je proti jakykoliv logice, takze se o to ani nebudu pokouset 7citovat
#006108
avatar
Jasne chapem... :) ide o to ze tie najdene hodnoty uz nebudem viac spracovavat, cize to ze sa s tym uz nebude dat pracovat nevadi... akurat ja si to chcem potom vyimportovat do XML ako jednu premennu a to by mi ulahcilo samotne XML, nebusel by som riesit pridavanie kazdeho riadku v stlpci... ale stacilo by prave ten jeden riadok so vsetkymi hodnotami v bunke...:)citovat
icon #006131
Poki
No tak asi takhle:Sub hledat()
Dim i As Long
Dim j As Long
Dim S As String
Dim L As String
Dim Vysledek
Dim Obsah As String


S = ThisWorkbook.Name
L = ActiveSheet.Name
Workbooks.Add

For i = 1 To Workbooks(S).Worksheets(L).Cells(65000, 1).End(xlUp).Row
Obsah = ""
For j = 1 To Workbooks(S).Worksheets(L).Cells(65000, 2).End(xlUp).Row

Vysledek = InStr(1, Workbooks(S).Worksheets(L).Cells(j, 2), Workbooks(S).Worksheets(L).Cells(i, 1))
If Vysledek = 0 Then
Else
Workbooks(Workbooks.Count).Worksheets(1).Cells(1, i) = Workbooks(S).Worksheets(L).Cells(i, 1)
Obsah = Obsah & Chr(10) & Workbooks(S).Worksheets(L).Cells(j, 2)
End If
Next j
Obsah = Right(Obsah, Len(Obsah) - 1)
Workbooks(Workbooks.Count).Worksheets(1).Cells(Cells(65000, i).End(xlUp).Row + 1, i) = Obsah
Next i

With Workbooks(Workbooks.Count).Worksheets(1).Range(Cells(1, 1), Cells(1, i - 1))
.Font.Bold = True
.HorizontalAlignment = xlCenter
.Borders(xlEdgeBottom).LineStyle = xlContinuous
End With
End Sub
citovat
#006136
avatar
Je to super, este raz velka vdaka... :)citovat

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

odpocet a storno tl.

PavDD • 28.3. 8:53

odpocet a storno tl.

Začátečník • 26.3. 14:39

odpocet a storno tl.

PavDD • 26.3. 10:22

odpocet a storno tl.

elninoslov • 26.3. 7:50

odpocet a storno tl.

PavDD • 26.3. 7:26

odpocet a storno tl.

elninoslov • 25.3. 22:34

odpocet a storno tl.

Začátečník • 25.3. 15:09