Osaisiko joku tehdä seuraavalla tavalla toimivan Excel-taulukon vai taipuuko kyseinen ohjelma lainkaan tällaiseen?
Soluihin syötetään esimerkiksi tekstit:
ALEKO AKKA LEKA FBI KISSA
ATOMI HIKI MATTO MINÄ ETSIÄ
Kaavan pitäisi verrata aina kunkin rivin ensimmäistä sanaa rivin muihin sanoihin ja ilmoittaa moniko näistä muista sanoista voidaan kirjoittaa käyttäen rivin ensimmäisen sanan kirjaimia.
Esimerkki:
1. rivin ensimmäisen sanan (ALEKO) kirjaimilla voidaan kirjoittaa myös rivillä olevat sanat AKKA ja LEKA, jolloin kaava palauttaisi arvon 2.
2. rivin ensimmäisen sanan (ATOMI) kirjaimilla voidaan kirjoittaa myös rivillä oleva sana MATTO, jolloin kaava palauttaisi arvon 1.
Samaa kirjainta voidaan siis käyttää useampaan kertaan (vrt. ALEKO - AKKA).
Soluihin syötetään esimerkiksi tekstit:
ALEKO AKKA LEKA FBI KISSA
ATOMI HIKI MATTO MINÄ ETSIÄ
Kaavan pitäisi verrata aina kunkin rivin ensimmäistä sanaa rivin muihin sanoihin ja ilmoittaa moniko näistä muista sanoista voidaan kirjoittaa käyttäen rivin ensimmäisen sanan kirjaimia.
Esimerkki:
1. rivin ensimmäisen sanan (ALEKO) kirjaimilla voidaan kirjoittaa myös rivillä olevat sanat AKKA ja LEKA, jolloin kaava palauttaisi arvon 2.
2. rivin ensimmäisen sanan (ATOMI) kirjaimilla voidaan kirjoittaa myös rivillä oleva sana MATTO, jolloin kaava palauttaisi arvon 1.
Samaa kirjainta voidaan siis käyttää useampaan kertaan (vrt. ALEKO - AKKA).
Vastaukset 4
Vanhimmat
VBA:ta kyllä tarvitaan eli lyhyen koodin voi laittaa vaikka makroksi.
Tapoja toteuttaa se on vaikka kuinka monta. Esmes vaikka yhdellä taulukolla eli ensiksi vertaava (ALEKO) muuttujaan sen pituus tauluun verrattava kakisulotteisena tauluna muuttujaan sen pituus. Ensimmäisen taulun jokainen kirjain käy läpi kaikki verrattavan taulun kijaimet ja osumat lasketaan (kaksiulotteinen verrattava siksi että on turha käydä läpi jo löydettyjä). Mikäli osumien lkm on sama kuin verrattavan pituus on ehto täyttynyt eli saadaan uuteen muuttujan luku 1 jne. sitten vain seuraava sana verrattavaksi...
Esimerkkisi sanojen vertaaminen ei kestäisi ajallisesti sitäkään että olet nostanut sormen pois hiirinapilta.
on noin helppoa niin laitatkos sen makron tänne niin pääsee hommiin...
Sub Haesanat
rivi=1
do
loydetty=0
vrt=cells(rivi,1)
if vrt="" then exit do
sar=2
do
sana=cells(rivi,sar)
if sana="" then exit do
kirjmaara=0
for t=1 to len(sana)
if instr(vrt,mid(sana,t,1))>0 then
kirjmaara=kirjmaara 1
end if
if kirjmaara=len(sana) then loydetty=loydetty 1
next
sar=sar 1
loop
cells(rivi,sar 1)=loydetty
rivi=rivi 1
loop
End Sub
openofficella vastaava paitsi, että löydetyt kirjaimet on lihavoituna
Sub Main
sheet=thiscomponent.sheets(0)
rivi=0
do
loydetty=0
vrt=sheet.getcellbyposition(0,rivi).string
if vrt="" then exit do
sar=1
do
cl=sheet.getcellbyposition(sar,rivi)
sana=cl.string
if sana="" then exit do
clcur = cl.createTextCursor()
clcur.gotoStart( False )
kirjmaara=0
for t=1 to len(sana)
clcur.goRight(0,false)
clcur.goRight(1,true)
if instr(vrt,mid(sana,t,1))>0 then
kirjmaara=kirjmaara 1
clcur.setPropertyValue("CharWeight", com.sun.star.awt.FontWeight.BOLD)
else
clcur.setPropertyValue("CharWeight", com.sun.star.awt.FontWeight.NORMAL)
end if
if kirjmaara=len(sana) then loydetty=loydetty 1
next
sar=sar 1
loop
sheet.getcellbyposition(sar 1,rivi).value=loydetty
rivi=rivi 1
loop
End Sub