< návrat zpět

MS Excel


Téma: Challenge - Odstraňte diakritiku rss

Zaslal/a icon 11.1.2016 10:32

eLCHaTak mně dneska napadlo, jestli by to nešlo. Měl jsem chviličku a zkusil to. A jde to. Takže, jestli má někdo zájem, může to zkusit taky. ;)))

Odstranit diakritiku pomocí VBA není problém. Dokážete to ale pomocí vzorce(ů)?

1. Není možné použít VBA (a pro jistotu ani žádný jiný programovací jazyk) - pouze vzorce.
2. Je možné použít pomocné sloupce.
3. Musí být zachována velikost písmen.
4. Ostatní znaky musí zůstat tak jak jsou a na svých místech ;)
5. Není možné použít pomocné tabulky!!
6. Nelze použít řetězců (podobně jako ve VBA) něco jako "ÁČĎÉĚÍŇŘŠŤÚŮÝŽáčďéeěíňřšťúůýž"=>"ACDEEINRSTUUYZacdeeinrstuuyz". Řešení musí být obecné, abych nemusel myslet na to, jaké znaky se vyskytují.

Pro hodnoty
Čuňačina
Pišta Hufnágl
Áčka jako Béčka
Champs-Élysées
Curaçao
El Niño
smörgåstårta
tête-à-tête


bude výsledek
Cunacina
Pista Hufnagl
Acka jako Becka
Champs-Elysees
Curacao
El Nino
smorgastarta
tete-a-tete
Pokud použijete pomocné sloupce, vložte vždy přílohu.

Zaslat odpověď >

Strana:  « předchozí  1 2 3
#030308
avatar
trosku mimo temu ale len na dopnenie. Ked zu robime databazu znakov tak nie kazdy znak tam ide doplnit ale daju sa tam dolnit s funkciou zistime jeho ID:

Debug.Print AscW(Selection)

a potom mozme zapisat:
Selection.Replace ChrW(317), "L", MatchCase:=True

nie kazde Ľ je Ľcitovat
#030318
elninoslov
@eLCHa : Narýchlo som to vyskúšal, a je to nie zrovnateľná, ale najrýchlejšia metóda. Perfektné. Rýchlo som prebehol aj Váš kód, a hneď som si všimol vylepšenia (krátke stringy, dolláriky...) Preštudujem lepšie neskôr. Tá stránka o optimalizácii, čo ste minule poslal, je veľmi prospešná.citovat
#037863
avatar
Uprimne si myslim, ze byste meli svuj cas venovat necemu jinemu.
Proc?
Pusobi to na me, ze mate dojem (pisu v mnoznem cisle, nevykam), ze poznavate "prirodu", proste objektivni jevy.
Tam neni neuzitecneho snazeni nebo neduleziteho, vzdycky je to krasna cinnost.
Jenomze tady je to jine.
Jestlize nejaky znak vznikl z jineho "pridanim diakritiky" a vy to nejak - jakkoli jste schopni z excelu vyrazit, tak tuto informaci museli tvurci excelu do excelu vlozit. Cili nekde je tam pritomna v ciste podobe.
Je to stejne jako travit cas snahou o decompilaci programu.
Ano, pokud je valka a jedna se o nepritelovo dilo. Nebo pokud je to zprava mimozemske civilizace. Nebo pokud nam to prinesou archeologove. V techto pripadech by nase snaha mela smysl.
Ale takhle ne.
Podobne me iritovalo ekonomicke zpravodajstvi bolseviku, ktere sestavalo prakticky jen ze zprav o tom, jak se nekde u nas zacalo vyrabet neco, co se do te doby dovazelo z "kapitalisticke" ciziny, a tim padem od ted kazdy rok usetrime tolik a tolik "devizovych korun".
Ten cas, co nasi technici venovali vynalezani vynalezeneho (a casto to byli vynikajici technici) na prohnilem Zapade zatim venovali na vynalezani necoho, co my budeme napodobovat zas zitra.
Mimochodem, tohle by me zajimalo, jestli v sobe znakovy system Unicode nese informaci o pribuznosti znaku, pripadne o slovnikovem poradi atd.
(za nase CH by nekdo zasluhoval popravit. Ne ted nekdo z IT ale zrejme nejaky obrozenec.
V prvni tride tim skoncila moje duvera v ucitele a vzdelavaci system. Protoze tvrdit mi, ze ch je jedno pismeno a pritom ho mit pred sebou, to jsem povazoval za urazku.citovat
#037864
avatar

honza787145 napsal/a:

Uprimne si myslim, ze byste meli svuj cas venovat necemu jinemu.
Proc?

Užitočnejším myslíš niečo také ako napr. "onanovať"?
Chceš sa tu hrať na inkvizítora a určovať, čo, kto má kedy , ako a s kým robiť?citovat
icon #037883
eLCHa
@honzaxxx
Jestlize nejaky znak vznikl z jineho "pridanim diakritiky" a vy to nejak - jakkoli jste schopni z excelu vyrazit, tak tuto informaci museli tvurci excelu do excelu vlozit. Cili nekde je tam pritomna v ciste podobe.

Ano máte pravdu, možná někde bude. Pokud nám, ale neřeknete kde a jak se k ní dostat, tak je tato informace k ničemu.
V C# to umím bez takovýchto pomůcek.

Čemu věnuji svůj čas je moje věc a jenom napovím - udržuji si svůj mozek tímto funkční a zároveň řeším věci, které mi pomáhají v práci.

Zbytek příspěvku je o ničem, nikoho tu nezajímá a měl byste svůj čas věnovat něčemu užitečnějšímu.citovat
#037889
avatar
Jestlize nejaky znak vznikl z jineho "pridanim diakritiky" a vy to nejak - jakkoli jste schopni z excelu vyrazit, tak tuto informaci museli tvurci excelu do excelu vlozit. Cili nekde je tam pritomna v ciste podobe.

To asi těžko.

Už samotné české znaky v rámci ANSI nemají logiku ve smyslu posunu pozice znaku, ostatně ani nemohou (u -> ů, ú, případně ü), neexistují jen dvojice, nedokázali bychom v českém textu používat němčinu atd. A Unicode nic nevyřeší. Ukládat text kdekoliv bez diakritiky a s ní je - no zkrátka hloupost. Odvozenost znaků se nabízí tak maximálně v šikovném editoru fontů.

Poznatek mimo: Řadu problémů je dobré směřovat mimo Excel, i když se tady pro procvičení mozkovny vyrábíme nástroje jak v nějaké bláznivé adventuře. Mimo jiné se objevuje stále více online služeb na internetu, které za nás hodně pořeší (osobně se tak třeba zbavuji co nejvíc češtiny v již hotových kódech VBA). A nejen to. Takové rozpoznávání textu v PDF už umí nejen služby na webu, ale i Android aplikace, na změnu velikosti písmen si pomáhám třeba i ve Wordu atd. A u textu je NANEJVÝŠ VHODNÉ zaměřit se i na regulární výrazy (viz vedle dotaz na zpracování ulic a čísel popisných).citovat
#043320
avatar
Myslim, ze toto je ta prava odpoved:
https://www.devhut.net/2017/08/18/vba-convert-foreign-accent-characters-to-plain-english-characters/citovat
#044145
avatar
použít funkci DOSADIT. Tento příklad platí pro buňku A1. Odstraní všechnu diaktitiku (i německou) z velkých i malých písmen...
=DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT(A1;"á";"a");"Á";"A");"ä";"a");"Ä";"A");"č";"c");"Č";"C");"ď";"d");"Ď";"D");"é";"e");"ě";"e");"ë";"e");"É";"E");"Ě";"E");"Ë";"E");"í";"i");"Í";"I");"ň";"n");"Ň";"N");"ó";"o");"Ó";"O");"ö";"o");"Ö";"O");"ř";"r");"Ř";"R");"š";"s");"Š";"S");"ť";"t");"Ť";"T");"ú";"u");"Ú";"U");"ů";"u");"Ů";"U");"ü";"u");"Ü";"U");"ý";"y");"Ý";"Y");"ž";"z");"Ž";"Z")citovat
#044146
avatar

Jirka003 napsal/a:

použít funkci DOSADIT. Tento příklad platí pro buňku A1. Odstraní všechnu diaktitiku (i německou) z velkých i malých písmen...
=DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT
(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT
(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT
(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT
(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT
(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT
(DOSADIT(DOSADIT(DOSADIT(DOSADIT(DOSADIT
(DOSADIT(DOSADIT(DOSADIT(A1;"á";"a");"Á";"A")
;"ä";"a");"Ä";"A");"č";"c");"Č";"C");"ď";"d")
;"Ď";"D");"é";"e");"ě";"e");"ë";"e");"É";"E")
;"Ě";"E");"Ë";"E");"í";"i");"Í";"I");"ň";"n")
;"Ň";"N");"ó";"o");"Ó";"O");"ö";"o");"Ö";"O")
;"ř";"r");"Ř";"R");"š";"s");"Š";"S");"ť";"t")
;"Ť";"T");"ú";"u");"Ú";"U");"ů";"u");"Ů";"U")
;"ü";"u");"Ü";"U");"ý";"y");"Ý";"Y");"ž";"z");"Ž";"Z")
citovat
#044147
elninoslov
Ani najväčším omylom to neodstráni všetku diakritiku. Ani len slovenskú nie (ŕ,ô,ľ,ĺ). O iných ani nehovorím (ń,ñ,ć...). Pozrite sa na Mapu znakov, koľko ich tam ešte je.citovat

Strana:  « předchozí  1 2 3

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura III

Oblíbený formulář Faktura byl vylepšen a rozšířen. Formulář faktura III
Více se dočtete zde.

Aktivní diskuse

Výpočet data narození

marjankaj • 20.1. 11:45

Výpočet data narození

Anonym • 20.1. 11:40

Výpočet data narození

marjankaj • 20.1. 11:00

Podbarvení buňky z jiného listu

Marekh • 20.1. 10:21

ActiveX - prvek ComboBox

OB • 20.1. 8:09

Výpočet data narození

JOHAN • 20.1. 6:30

ActiveX - prvek ComboBox

elninoslov • 20.1. 1:02