< návrat zpět

MS Excel


Téma: Funkcia =CONCATENATE(A1;"_";B1) rss

Zaslal/a 7.6.2013 11:50

Dobrý deň,
Chcem poprosiť nejakého dobráka o pomoc.
Popis:
V liste „concatenate“ pomocou funkcie =CONCATENATE(A1;"_";B1) potrebujem vytvoriť všetky možné kombinácie dvojíc stĺpcov ktoré sú v tomto liste, a ktore sa kopírujú do do listu „vysledok“ tak ako idú.
Začína sa stĺpcom „D“ ktorý sa nakopíruje do stĺpca „A“
- Do stĺpca „B“ sa nakopíruje stĺpec „E“
- V bunke c1 už mám vloženú funkciu =CONCATENATE(A1;"_";B1)
- V stĺpci „C“ mi funkcia zlúči hodnoty stĺpcov (A1;"_";B1)
- Stĺpec „C“ sa vykopíruje do listu vysledok – stĺpca „A“
- Pokračuje ďalej – stĺpec „F“ sa nakopíruje do stĺpca „B“
- Zlúčené hodnoty z „C“ sa kopírujú do listu vysledek – stlpca „B“
- A takto zaradom sa urobia všetky možné kombinácie stĺpca „D“
-
- potom sa nakopíruje do stĺpca „A“ stĺpec „E“ a pokračuje obdobne všetkými možnými kombináciami pre tento stĺpec.
Nahral som na macro.
Keby toho bolo málo tak by mi stačilo nahraté macro, ale zošitov je viac ako 30, a počet stĺpcov a riadkov je rôzny,
Stĺpcov od niekoľkých desiatok až po stovky a riadkov od niekoľko desiatok tisíc po stotisíc.
Vo VBA sa nevyznám, odrástol som na ruštine a vtedy to také ešte nebolo. Viem si nahrať macro a potom ho opakovane používať – bohužial, nahraté macro nebere v potaz meniace sa počty riadkov a vytvorí zlúčené hodnoty
len toľkých riadkoch – pri akých bolo nahrané.
Konfigurácia : OS – Win 7 x64, Office 2013 cz x64.

Za akúkolvek pomoc vopred ďakujem.

Příloha: rar13754_macro_atributy_2.rar (16kB, staženo 29x)
Zaslat odpověď >

Strana:  « předchozí  1 2 3 4 5   další »
#013833
avatar
samozrejme, vďaka.citovat
#013834
avatar
to by bolo výborné....citovat
#013861
avatar
rychlejsie to nepojde .. nenasiel som funkciu ktora by naraz spojila stlpce do jedneho stlpca :) vsetko sa muselo cyklit pojdnom

Ohladne toho druheho makra to by malo fungovat normalne zadas len v nom ktore stlpce chces aby sa cyklili a to je vse

jedine rozdiel je v tom ze nezadavaju sa stlpce A, B C ale 1,2,3 ich poradiecitovat
icon #013865
avatar
@Paloo: rychlejsie to nepojde .. nenasiel som funkciu ktora by naraz spojila stlpce do jedneho stlpca :)

možno off-topic, páč toto vlákno som podrobne neprechádzal, ale spojiť napr. A1:A100 a B1:B100 do C1:C100 ide maticovým vzorcom zadaným v C1:C100 v tvare
A1:A100&B1:B100, analogicky je možno použiť i vo VBA (FormulaArray) ako argumenty eventuálne použiť pomenované oblasti (na konci prípadne nahradiť hodnotami)citovat
#013868
avatar
Al: ale aj tak musis v array pole prechadzat to po bunke a nemozes jednym povelom to hodit naraz

musi sa to plnit postupne
for x = lbound(c) to ubound(c)
c(x) = a(x) & " " & b(x)
next

nejde napisat c(0 to 200) = a(0 to 200) & " " & b(0 to 200)

uprava prispevku: SLO BY TO :Pcitovat
#013870
avatar
mne by pomohlo keby sa to dalo zrýchliť, keď som dával všetkých 180 stĺpcov = vzájomné všetky kombinácie, tak mi 3x išlo PC do modrej obrazovky,pritom 180 stlpcov = 16290 nových stĺpcov - čo je ešte v limite excelu,dva SSD disky sú v RAID 0, RAM - 16GB, a procesor je taktovaný na 5GH,žiadne velké zaťaženie neukazuje, keď ich je okolo 100 stĺpcov tak to funguje bezchybne,,,

čo sa týka toho druhého macra - tak som sa to pokúšal upraviť vo VBA, ale kočí mi to erorom - to vzdávam, nemám také znalosti, snáď keby som mal 3 príklady - kde by som porovnal rozdiely v tom zápise... 5

vytvoril som nový príklad na jeden stĺpec :

- stĺpec A sa kombinuje s ostatnými
- v outpute teda bude: A_B, A_C, A_D ...až po posledný stĺpec, po zlučení s posledným stĺpcom sa zastaví.

niekolko stĺpcov - A až E, alebo prvých 5 stĺpcov:

- v outpute teda bude: A_B, A_C, A_D ...až po posledný stĺpec,

- potom začne B stĺpec: B_C, B_D, B_E...až po posledný stĺpec

- nasleduje C stlpec: C_D, C_E,C_F...až po posledný stĺpec

- nasleduje D stlpec: D_E, D_F , D_G...až po posledný stĺpec

- nasleduje E stlpec: E_F , E_G, E_H...až po posledný stĺpec, teraz po zlúčení s posledným stĺpcom sa zastaví.
Bez ohladu na počet stĺpcov a riadkov tak ako v prvom macre pri všetkých kombináciach.
Za všetko ďakujem.
Příloha: rar13870_concatenate_atributy_2.rar (17kB, staženo 16x)
citovat
icon #013872
eLCHa
@Paloo
nejde napisat c(0 to 200) = a(0 to 200) & " " & b(0 to 200)

Taky se mi to moc nechce studovat, ale řekl bych že jde

Sub test2()
Dim rData As Range
Set rData = Sheets("concatenate").Cells(1, 1).CurrentRegion
Set rData = rData.Resize(rData.Rows.Count, rData.Columns.Count - 1)
Set rData = Sheets("Output").Range(rData.Address)

Dim lCalc As Long
rData.FormulaR1C1 = "=concatenate!RC1&""_""&concatenate!RC[1]"
rData.Value = rData.Value

Set rData = Nothing
End Sub


jen dodám, že jsem si stáhl poslední přílohu a dosáhl stejného výsledku jako v listu Output (jestli to je na zadání, to nevím ;) )citovat
icon #013873
avatar
@Palooo: Znovu podotýkam, že nie som detailne oboznámený s problémom, ktorý riešite, ničmenej, to, čo som zmienil ja, by vyzeralo nejako takto: With Range("C1:C100")
.FormulaArray = "=RC[-2]:R[99]C[-2]&RC[-1]:R[99]C[-1]"
.Copy
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With


edit: a inšpirovaný výborným trikom eLCHy nejak takto:
With Range("C1:C100")
.FormulaArray = "=RC[-2]:R[99]C[-2]&RC[-1]:R[99]C[-1]"
.Value = .Value
End With


no, a nakoniec, ani ten maticový vzorec nie je nevyhnutný: With Range("C1:C100")
.Formula = "=RC[-2]&RC[-1]"
.Value = .Value
End With
citovat
#013874
avatar
to eLCHa: prave toto ma teraz napadlo :)))))
to AL: ano, ide som hlupak mam sa co este ucit .)
ochvilu to zakomponujem do prvej verzii makracitovat
icon #013875
eLCHa
@AL
.Copy
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False


ale fuj ;))citovat

Strana:  « předchozí  1 2 3 4 5   další »

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