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

 

 

 

This entry was posted in Excel. Bookmark the permalink.

Lisa kommentaar

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Muuda )

Twitter picture

You are commenting using your Twitter account. Log Out / Muuda )

Facebook photo

You are commenting using your Facebook account. Log Out / Muuda )

Google+ photo

You are commenting using your Google+ account. Log Out / Muuda )

Connecting to %s