< návrat zpět

MS Excel


Téma: Makro: kombinace if s textem a bunkami rss

Zaslal/a 21.4.2017 10:36

Ahoj,

mám menší trable s jedním reportem a trvá mě docela dlouho dát vše dohromady tak zkouším makro a bohužel se nemůžu dostat k rešení.

Mám excel, ve kterém mám ve sloupcech následující hodnoty:
A = ID zákazníka
B = jméno zákazníka
C = číslo faktury
D = interní ID faktury
E = částka
F = měna
G = datum faktury
H = email
I = stát
J = jazyk
K = details

Potřeboval bych makro, které mě do sloupce K vloží text (ne vzorec), který bude kombinací pevného textu a buňky.

Potřeboval bych něco, co rozezná jazyk ve sloupci J a když jazyk = English, pak do sloupce K vloží text ("Invoice "&C3&" of an amount of "&F3&E3&" due on "&G3&char(10)&"Payment link: ")

... a když jazyk je třeba Dutch, tak se změní jen pevný text který bude nadefinovaný přímo v makru.

Když zkouším vložit vzorec, tak mě to hlásí chybu, protože těch dat skládám dohromady až moc a contatenate mě povolí max 255 znaků, proto bych potřeboval makro, které podle jazyka zkombinuje pevný text a hodnoty z buňek a vloží do sloupce K přímo text.

Budu moc rád za pomoc, if pro další jazyky které potřebuji si už udělám sám a taky pevný text v makru pro další jazyky atd.

Příklad je přímo v přiloženém dokumentu.

Snad jsem to vysvětlil dobře :)

Příloha: zip36133_example.zip (8kB, staženo 24x)
Zaslat odpověď >

icon #036137
avatar
a contatenate mě povolí max 255 znaků no a prečo miesto concatenate na spájanie reťazcov teda nepoužiješ ampersand?

pokiaľ makrom, tak v prípade viacerých jazykov je rozhodne vhodnejšia konštrukcia select case, než viacnásobné if. To makro písať nebudem, je to dostatočne jednoduché na to, aby si to pri troche snahy zvládol sám. Vytvor si v niektorej bunke vzorec. Potom si pusť záznamník makra, vzorec zedituj cez F2 a potvrď enterom. Zastav záznamník a pozri sa, čo do makra zapísal. To už potom zvládneš upraviť a nakoniec ten vzorec budeš aplikovať do vybranej oblasti (range). Tie slová pre jednotlivé jazykové verzie by som zapísal niekam priamo do poľa, vytvoreného vo VBA a potom v závislosti na jazyku vyberal konkrétny riadok z poľa a kombinoval ho s hodnotami z príslušných stĺpcov tabuľky.citovat
#036143
elninoslov
Pr.
Sub Zapis()
Dim R As Long, i As Long, D(), S() As String
With ActiveSheet
R = .Cells(Rows.Count, 1).End(xlUp).Row - 1
If R = 0 Then Exit Sub
D = .Cells(2, 3).Resize(R, 8).Value2
ReDim S(1 To R, 1 To 1)

For i = 1 To R
Select Case D(i, 8)
Case "Dutch": S(i, 1) = "Factuur " & D(i, 1) & " - EUR" & D(i, 3) & ", verlopen op " & Format(D(i, 5), "d-m-yyyy") & Chr(10) & "Betaallink: https://payments.invoice.com/" & D(i, 2)
Case "English": S(i, 1) = "Invoice " & D(i, 1) & " - EUR" & D(i, 3) & ", due on " & Format(D(i, 5), "d-m-yyyy") & Chr(10) & "Payment link: https://payments.invoice.com/" & D(i, 2)
Case Else: S(i, 1) = "ERROR_LANGUAGE"
End Select
Next i
.Cells(2, 11).Resize(R).Value2 = S
End With
End Sub
citovat

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