Asendame punkti punktiga

Eelmisel nädalal õnnestus mul lahti hammustada üks huvitav Exceli probleem. Põhiliselt Exceli ja VBA probleem.

Alustame algusest.

Aegajalt tuleb andmeid lugeda allikatest, kes ei tea meie kohalikke reegleid. Arvudes kümnendkoha tähistajana punkt, kuupäevad vales järjekorras.

Kui on miski kogus punktiga arve, siis on üks võimalus nad päris-arvudeks muuta vana tuttav otsi-ja-asend (find-replace)

  • Vajutad Ctrl-H
  • Valid otsimiseks punkti
  • Lisad asendamiseks koma
  • Ütled, et asenda kõik

Ja sul ongi punktiga arvud (tekst) muutunud komaga arvudeks (arv)

Ühel sõbral oli soov see operatsioon automatiseerida. Kirjutada VBA-s kood, mis peale andmete importimist muudaks punktid komadeks. Mõeldud-tehtud. Mis muud kui salvestad makrona eelmise tegevuse. Tekib lihtne VBA kood:

Kui aga see makro käivitada (just sama salvestamise tulemusena saadud makro), on tulemus hämmastav:

Vähe sellest, kui mõni arv selles valikus on õige, siis see tehakse ka 1000x suuremaks

peale makro käivitamist

Või

peale makro käivitamist

Viimasel juhul muudeti õige arv lausa tekstiks

Maadlesin pisut ja otsisin selgust ja lahendus oli üllatavam, kui ma oleks arvanud. Makro tuli ümber ehitada. Selle asemel, et asendada punkt komaga, tuleb asendada punkt punktiga. Just! Nii hämmastav, kui see ka ei tundu, makro, mis asendab tekstis punkti punktiga, teeb vajaliku töö.

Põhjus on raskesti seletatav aga aimatav. Nimelt peab makro käivitamise ajal Excel end “ingliskeelseks”, peale makro tööd muutub taas “õigekeelseks”. Nii toimibki mõttetuna näiv makro normaalselt ja teeb just seda, mida vaja teha.

Jõudu katsetamisel

Henn

 

 

 

Advertisements
Rubriigid: Excel. Salvesta püsiviide oma järjehoidjasse.

Lisa kommentaar

Täida nõutavad väljad või kliki ikoonile, et sisse logida:

WordPress.com Logo

Sa kommenteerid kasutades oma WordPress.com kontot. Logi välja / Muuda )

Twitter picture

Sa kommenteerid kasutades oma Twitter kontot. Logi välja / Muuda )

Facebook photo

Sa kommenteerid kasutades oma Facebook kontot. Logi välja / Muuda )

Google+ photo

Sa kommenteerid kasutades oma Google+ kontot. Logi välja / Muuda )

Connecting to %s