Nejste přihlášen/a.

Přihlásit se do poradny

 

Excel a makro

Od: jidr odpovědí: 5 změna:
Ahoj měl bych dotaz na Excel a makra. Potřeboval bych makro které pro označené buňky vloží do nové bunky jednotlivé záznamy včetně dělícího znaků.
Poradíte?

 

 

5 odpovědí na otázku
Řazeno dle hodnocení

 

 


0x

Obávám se, že na konkrétní radu je zadání příliš obecné.

Zkuste to rozvést (příklad). Tady se není čeho chytit .

 

figurek*

0x

Poptáváte dost nesnadnou úlohu, protože vede na cyklus For Each Cell from Selection.

Zkuste si nejdříve tady toto makro. Až vám půjde, přidáme.

Do aktivní buňky se poskládá string z hodnoty z buňky odsazené o dvě místa nalevo, přidá se lomítko a hodnota z buňky odsazené o jedno místo nalevo.

*

Sub Macro1()
ActiveCell.Value = ActiveCell.Offset(0, -2).Value & "/" & ActiveCell.Offset(0, -1).Value
End Sub

jidr

OK, díky, mám vytvořeno, Jak dále?


doplněno 13.04.17 16:20:

Mám makro, které spojí do označených buněk vždycky spojí spojí string z bunky o jednu vlevo a o dvě vlevo:

Sub test()

Dim cel As Range
Dim selectedRange As Range

Set selectedRange = Application.Selection

For Each cel In selectedRange.Cells
cel.Value = cel.Offset(0, -2).Value & ", " & cel.Offset(0, -1).Value
Next cel

End Sub

jidr

Takže makro už mám, ale potřebuju dořešit jednu věc. Makro spojí všechny hodnoty označené oblasti do stringu a string vytiskne do bu%nky A1. Jak nastavím, aby se zapsalo relativně k vybrané oblasti?


doplněno 13.04.17 17:13:

Tak už to mám

Sub test()

Dim cel As Range
Dim selectedRange As Range
Dim text As String

Set selectedRange = Application.Selection

For Each cel In selectedRange.Cells
text = text & cel.Value & " "
Next cel
selectedRange.Cells(1, 3) = text

End Sub

figurek*

jj, to by šlo.

Mrkněte se na moje makra. V prvním vidíte snad ten nejjednodušší způsob zápisu, který se dá použít. Do druhého makra jsem přidal podmínku, aby se vám separátor nevkládal i v případě prázdných buněk ve výběru.

Vy máte jako separátor mezeru, kde rozdíl není tak patrný, ale zkuste přidat lomítko. Hned uvidíte co se stane.

Jasná věc, nějaká taková podmínka by v podobných makrech vždycky měla být.

*

Sub Macro1()
Dim Vysledek As String
Const Separator As String = "/ "
For Each Cell In Selection
Vysledek = Vysledek & Cell.Value & Separator
Next Cell
ActiveCell.Offset(0, 3) = Vysledek
End Sub

Sub Macro2()
Dim Vysledek As String
Const Separator As String = "/ "
For Each Cell In Selection
If Cell.Value <> "" Then Vysledek = Vysledek & Cell.Value & Separator
Next Cell
ActiveCell.Offset(0, 3) = Vysledek
End Sub

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]