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í

 

 

hodnocení

0x
avatar amper

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 *nevi*.

 

figurek*
hodnocení

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

Excel a makro
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

Excel a makro #2

 

 


 

 

 

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]