» Poradna » Programy

EXCEL - práce s databází

 | Microsoft Windows 7 Chrome 48.0.2564.116

Ahoj, chtěl bych poprosit o radu.Zde soubor: http://leteckaposta.cz/591450117 Mám poměrně dost obsáhlou databázi (hodně!), takže jsem vytvořil ukázkový pracovní list s bunkami obsahující A až Z, principiálně stačí. :) Problém je následující: V 1.listě "Co mám" je podoba, kterou aktuálně mám k dispozici a rád bych všechny hodnoty (A až Z) sloučil do jedné buňky s tím, že budou provázány z databáze. Zatím to řeším tak, že v 2.pracovním listě s názvem "Co chci" přes funkci =CONCATENATE( slučuji buňky do jednoho, ovšem trochu složitě, protože je nejdřív hledám v databázi a pak až "sázím" do funkce. V praxi hrozně zdlouhavé, náročné a otravné. Napíšu funkci, kouknu co hledám, "A", jdu do databáze, zjistím pozici buňky s hodnotou "A", zapíšu do funkce. Zná někdo elegantnější způsob? Díky za reakce.

Mohlo by vás také zajímat

Odpovědi na otázku

 |   |  Microsoft Windows 7 Chrome 40.0.2214.93

Ahoj,mozna tohle:Sub test()Dim ws As Worksheetdim As RangeDim arrDim s As StringDim x As IntegerSet ws = ThisWorkbook.Sheets(1)Set rng = ws.Range("A1", ws.Range("A" & Rows.Count).End(xlUp))arr = Application.Transpose(rng.Value)For x = 1 To UBound(arr) If x <> UBound(arr) Then s = s & arr(x) & "," & vbLf Else s = s & arr(x) End IfNext xWorksheets.AddActiveSheet.Range("A1") = sEnd Sub

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 40.0.2214.93
 |   |  Microsoft Windows 7 Chrome 40.0.2214.93

a tady jeste moznost[code]Sub test2()Dim arr, i As Longarr = Application.Transpose(Range("A1", Range("A" & Rows.Count).End(xlUp)))Sheets.Add before:=ActiveSheetRange("A1") = Join(arr, "," & vbLf)End Sub[/code]

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 Chrome 49.0.2623.87

Ahoj syde, díky za reakci. Dostávám se k tomu až ted. 1/ Snažím se to předělat, ale neumím makra. Jednak ten rozsah A1 až poslední bunka ve sloupci se snažím předělat na výběr, tzn. já vyberu rozsah buněk (selection) a ten výběr přejede přes makro. (https://support.microsoft.com/cs-cz/kb/291308) zkoušel jsem to přes toto a pořád mi to hází chybu: konkrétně ... Set ws = ActiveSheet.Range("a1").CurrentRegion.Select 2/ Je to super, částečně mi to pomůže, ale pořád to nevyřeší můj problém úplně. Jde o to, že se mi vytvoří ten List1. A mým cílem je, aby při změně bunky v databázi (např. z "A" na "AAA") se mi tato změna projevila i v nově vytvořeném listu (List1). Ještě jednou díky za reakci, Syde !

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 48.0.2564.116

Ahoj,tady najdes soubor: http://leteckaposta.cz/uploaded/190603264Trosku jsem si s tim v ramci vyuky pohral.Najdes tam 2 makra - dlouhe a kratke. Tak si to vyzkousej.Prve jsem to moc dobre nepochopil, ze se jedna o odkazy z jineho listu a chces je zachovat.syd

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | Microsoft Windows 7 Chrome 49.0.2623.87

Ahoj Syde, tak právě jsem to dokončil. Strašně moc mi to pomohlo, bez tvé pomoci bych to dělal tak do konce léta. :)) Ještě jednou obrovský díky a nechť se ti tvá ochota vrátí. Díky, Jakub.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 40.0.2214.93

Vyborne,tesi me, ze ti to pomohlo.syd

Souhlasím  |  Nesouhlasím  |  Odpovědět