Funktiota: laske rivistä summa jossa a=1, b=2, jne

sarsaa

Eli miten teen tällaisen kaavan: Rivissä eri ruuduissa on kirjaimia, esim. A, B,C, jne. A tarkoittaa lukua 1, B=2, C=3. Miten rivistä lasketaan näiden summa. Eli jos ekassa ruudussa on A, tokassa B ja kolmannessa C, summa pitäisi olla 6. Mutta miten teen siis sellaisen kaavan että excel ymmärtää minkä arvon mikäkin kirjain saa ja laskee ne yhteen?

11

719

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • lokäyttäjä

      Asenna suosiolla LibreOffice, niin saat apuja.

    • phaku

      PHAKU-funktio yksi mahdollisuus. Esim:
      - tee jonnekin aputaulukko, josta selviää kunkin kirjaimen "numeroarvo" (vaikka J1 alaspäin kirjaimet (A, B, C, jne,) ja K1 alaspäin numerot (1, 2, 3, jne...)
      - jos nuo A,B ja C ovat A1:C1, niin D1 kaava:
      =SUMMA(PHAKU(A1;J1:K10;2;0) PHAKU(B1;J1:K10;2;0) PHAKU(C1;J1:K10;2;0))
      Eli kaava hakee ensin A1 (A) vastaavan numeron aputaulukosta, tässä esimerkissä nyt 10 ensimmäistä aakkosta, solualueesta J1:K10, toisesta (2) sarakkeesta (K), jne... ja SUMMAA ne yhteen.

      • sarsaa

        Tämä toimii muuten mutta jos kopioin kaavan seuraavalle riville, myös aputaulukon alue vaihtuu yhdellä rivillä eteenpäin. Miten saan tehtyä aputaulukosta sellaisen vakio-osan kaavassa että kopioidessa alue ei vaihdu vaan pysyy samana?


      • fdbhsxdf

        Laitat siihen kaavan joka kohtaan aputaulukon alueen osoitteeseen taalamerkkejä $

        Tuossa esimerkissä oli aputaulukko J1:K10
        Muuta se tähän muotoon $J$1:$K$10

        =SUMMA(PHAKU(A1;$J$1:$K$10;2;0) PHAKU(B1;$J$1:$K$10;2;0) PHAKU(C1;$J$1:$K$10;2;0))


    • Kundepuu

      jos tarkoitus laskea loogisesti A=1, B=2, C=3 D=4 jne niin sitten helppoa
      soluun mihin haluat summan laitat matriisikaavan {=SUM(CODE(A1:D1)-64)}

      Keep EXCELing
      Kunde

    • Jos-metsään-haluat-mennä

      Käyköhän tämä ratkaisusta, kun ei ole tuota laskupäätä niin hiirellä vetäen seuraavaan soluun edellisestä: https://imgur.com/a/FdEQW

      ------------------------------------------------------------------------------------------------------------
      Linux Mint 17.3 Rosa
      Xfce 64-bit

    • sarsaa

      Kiitos paljon vastauksista. Loogista järjestystä ei ole, laitoin vain esimerkkinä mitä ajoin takaa. Kokeilen ehkä tuota aputaulukko-hommaa eka. Eli jos tietty kirjain saa tietyn arvon ja näitä kirjaimia on useita, niin niistä täytyis saada laskettua numeerinen summa niistä kirjaimista. Tää tais olla vielä huonommin selitetty kuin aikaisemmin, mut kuitenkin. 😀

      • Tämmöinen

        Aakkosnumeeriset merkit koodataan numeroina ja niiden koodit ovat englannin kielen mukaisessa aakkosjärjestyksessä välillä 65-90, pienet kirjaimet 97-122. (ääkkösten koodit eivät ole suomen kielen mukaisilla paikoillaan) Jos kirjaimen "A" haluaa saada vastaamaan arvoa 1, on sen koodista vähennettävä 64.
        =CHAR(65) --> "A"
        =CODE("A") --> 65

        Aputaulukkoja ei tarvita. Kunden lyhyt kaava huomioi aakkoset A-Z. Huomautuksena: Matriisikaava kirjoitetaan ilman kaarisulkeita, painetaan Ctrl Shift Enter, mikä tekee kaarisulkeet matriisikaavan merkiksi:
        {=SUM(CODE(A1:D1)-64)}


      • sarsaa

        Mutta kun mulla a=7, j=8, ö=14,5 jne. Niin toimiiko tää kaava silloinki?


      • hjlhjk

        Tuo kaava ei silloin toimi, koska se perustuu suoraan sen merkin koodiin. Lisäksi sen tulos on riippuvainen merkin koosta, siis A ja a eivät anna samaa tulosta. Aikaisemmin esitetty PHAKU ei välitä siitä, minkä kokoisia kirjaimia haetaan.


    • Kundepuu

      muuta kirjaimet ja vastaavat arvot sopiviksi koodissa
      ei väliä onko iso vai pikkukirjain vaiko sekaisin molempia

      moduullin...
      soluun mihin haluat tuloksen kaava esim. =LaskeKirjaimilla(A1:AA1)

      Function LaskeKirjaimilla(Laskualue As Range) As Double
      Dim x As Long
      Dim vars1
      Dim vars2

      vars1 = Array("A", "K", "c", "Ä", "VV")
      vars2 = Array(1, 2.3, 3.7, 12, 11.1)
      For Each solu In Laskualue
      If IsNumeric(Application.Match(solu.Value, vars1, 0)) Then
      x = CDbl(Application.Match(solu.Value, vars1, 0) - 1)
      LaskeKirjaimilla = LaskeKirjaimilla vars2(x)
      End If
      Next
      End Function

      Keep EXCELing
      @Kunde

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Niin surullinen

      onnettomuus taas. Voimia ihan kaikille läheisille,kavereille ja kouluun 🙏
      Lapua
      221
      5071
    2. MIksi suurin osa persuista on alkoholisteja?

      Tätä jäin pohdiskelemaan....
      Maailman menoa
      38
      3398
    3. 35
      2918
    4. Kehutaan vaihteeksi Perussuomalaisia

      Perussuomalaiset ovat olleet melkoisen lokakampanjoinnin kohteena, vaikka ovat saaneet paljon hyvää aikaiseksi. Nyt on
      Maailman menoa
      141
      2783
    5. Paloautoko se oli kolarissa Juntusrannan risteyksessä?

      Oli kuva paloautosta nettijutussa.
      Suomussalmi
      25
      2448
    6. SDP ylivoimainen ykkönen

      En ole koskaan viitsinyt käydä äänestämässä, mutta nyt SDP:n etumatka on niin kutkuttava, että pakkohan se on vaivautua.
      Maailman menoa
      68
      2276
    7. Tiesitkö? Johannes Brotheruksen ex-isäpuoli on kuin onkin Mikko Kuustonen - Tästä on kyse!

      Tiesitkö? Ja hehän on kuin kaksi marjaa... Johannes Brotherus on KUUMAA-yhtyeen jäsen ja tänä syksynä mukana Vain elämää
      Suomalaiset julkkikset
      19
      2178
    8. Mitä tapahtuu?

      Mitä säpäkän risteyksessä on tapahtunut kun poliiseja, ambulansseja ja kopteri paikalla?
      Outokumpu
      31
      1820
    9. Roiskeläpät takaisin niin alkaa lasit kestämään

      "Tuulilaseja hajottava talvi-ilmiö on ehkä ratkennut" Tämän päivän autoissa kun on esimerkiksi vanhempaa autokalustoa s
      Yleistä autoilusta
      41
      1762
    10. Polttomoottoriauto on köyhän merkki

      Kun ei ole varaa ostaa sähköautoa, niin joutuu köyhän autoa käyttämään.
      Maailman menoa
      83
      1438
    Aihe