< návrat zpět

MS Excel


Téma: Vložiť medzeru pred veľké písmeno-diakritika rss

Zaslal/a 7.11.2024 8:29

kabakaTáto funkcia vloží medzeru pred veľké písmeno, ale ignoruje mäkčene
Ak to prosím upraviť, aby to bralo do úvahy diakritiku. Ďakujem.

Function AddSpaces(pValue As String) As String
'Update 20140723
Dim xOut As String
xOut = VBA.Left(pValue, 1)
For i = 2 To VBA.Len(pValue)
xAsc = VBA.Asc(VBA.Mid(pValue, i, 1))
If xAsc >= 65 And xAsc <= 90 Then
xOut = xOut & " " & VBA.Mid(pValue, i, 1)
Else
xOut = xOut & VBA.Mid(pValue, i, 1)
End If
Next
AddSpaces = xOut
End Function


VYRIEŠENÉ Funkcia upravená elninoslovom funguje. Ale nakoniec som pdf súbor prekonvertovala online konvertorom do excelu. Ďakujem.

Zaslat odpověď >

#056955
elninoslov
Samozrejme to pôjde, ale najskôr otázka :
Prečo sa vynecháva ten 1. znak ???
Function AddSpaces(pValue As String) As String
Dim xOut As String, CH As String, chU As String, U As String, L As String

U = UCase(pValue)
L = LCase(pValue)

For i = 1 To Len(pValue)
chU = Mid(U, i, 1)
CH = Mid(pValue, i, 1)
If StrComp(chU, Mid(L, i, 1), vbBinaryCompare) <> 0 Then 'iba ak je to písmeno
CH = IIf(CH = chU, " ", vbNullString) & CH 'ak je to veľké písmeno, pridaj medzeru
End If
xOut = xOut & CH
Next i

AddSpaces = xOut
End Function
citovat
#056956
kabaka

elninoslov napsal/a:

Samozrejme to pôjde, ale najskôr otázka :
Prečo sa vynecháva ten 1. znak ???


Netuším, aký prvý znak sa vynecháva. Našla som funkciu. Skopírovala, vložila, spustila, funguje, len diakritiku ignoruje. Do funkcie som nezasahovala.citovat
#056957
elninoslov
Toto znamená, že sa prvý znak vloží do výsledku bez kontroly, a cyklus začína na znaku 2.
...
xOut = VBA.Left(pValue, 1)
For i = 2 To VBA.Len(pValue)
...

Editnem moju fnc v príspevku vyššie, aby brala celý reťazec.

EDIT: Napadá ma predsa len dôvod, prečo vynechať 1. písmeno. Ak sa jedná o pridanie medzery do zle zložených mien. Namiesto "MenoPriezvisko" urobí "Meno Priezvisko". V takomto prípade je nutné vynechanie 1. znaku, aby nevzniklo " Meno Priezvisko". Takže aký je účel?

Pridal som voliteľný parameter Start, ktorý určuje, od ktorého znaku sa má začať s kontrolou a pridávaním medzery. Ak sa parameter vynechá, začína sa od 1. znaku:
Function AddSpaces(pValue As String, Optional Start As Long = 1) As String
Dim xOut As String, CH As String, chU As String, U As String, L As String

U = UCase(pValue)
L = LCase(pValue)
xOut = Mid(pValue, 1, Start - 1)

For i = Start To Len(pValue)
chU = Mid(U, i, 1)
CH = Mid(pValue, i, 1)
If StrComp(chU, Mid(L, i, 1), vbBinaryCompare) <> 0 Then 'iba ak je to písmeno
CH = IIf(CH = chU, " ", vbNullString) & CH 'ak je to veľké písmeno, pridaj medzeru
End If
xOut = xOut & CH
Next i

AddSpaces = xOut
End Function
citovat
#056958
kabaka

elninoslov napsal/a:



EDIT: Napadá ma predsa len dôvod, prečo vynechať 1. písmeno. Ak sa jedná o pridanie medzery do zle zložených mien. Namiesto "MenoPriezvisko" urobí "Meno Priezvisko". V takomto prípade je nutné vynechanie 1. znaku, aby nevzniklo " Meno Priezvisko". Takže aký je účel?


Účel je taký, že presne to potrebujem. Aby z MenoPriezvisko urobilo Meno Priezvisko. Kopírovala som zoznam zamestnancov z PDF do excelu.

Štruktúra PDF dokumentu je: Priezvisko, Meno, Titul, Oddelenie

Údaje v exceli sú v jednom stĺpci, potrebujem ich rozdeliť na 4 resp. 2 stĺpce
Priezvisko meno titul, Oddelenie

Lenže neviem ošetriť, aby Priezvisko meno a titul boli spolu, oddelenie v jednom stĺpci, a všetky tituly spolu.

Tak som údaje zbavila medzier a preto chcem teraz vložiť medzeru pred veľké písmeno. Viem, že som si to skomplikovala.

Ďakujem, teraz to už funguje.citovat
#056959
€Ł мσşqμΐτσ
Dobrý den,
můžete napsat v jakém formátu vypadá jeden řádek?
třeba "MenoPriezviskoTitul1.Titul2.Oddelenie1" jde mi o to jestli mají za titulem tečku nebo ne? jestli má někdo dvě jména a 1 přímení, nebo titul před jménem titul za jménem. proste jaké jsou různé varianty?

* edit: koukám že už to funguje tak nic 1citovat
#056960
elninoslov
Ako píše "€Ł мσşqμΐτσ", treba pridať príklad takých dát. Inak aký máte Excel? V novších verziách sa dá načítať PDF do PowerQuery, a tam by sa to možno dalo ošetriť (podľa toho ako to PDF vyzerá).citovat
#056966
kabaka
Nechce mi pridať originál súbor pdf zbalený v zipe.
Súbor má veľkosť 515kb. Prekračuje povolenú veľkosť.

Urobím to inak. Prekonvertujem to cez online konvertor a bude.citovat
#056970
elninoslov
Ak máte Office 2021/2024/365 tak mi to pošlite mailom alebo na nejaké verejné úložisko to capnite (Google Disk a pod). Samozrejme iba ak je to zverejniteľné.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