Random luku + tekstiä soluun?

Anonyymi

Hei,

Haluan tulostaa randomilla kaksi lukua samaan soluun. Miten se pitäisi tähän koodiin laittaa? Nyt on siis tämä ja arpoo yhden luvun:

Sub Testitaulu()
Dim a As Integer

For i = 1 To 10
a = Rnd * 10 1
Cells(i 1, 3) = a

Next

End Sub

Tästä siis soluun tulee esim. "2", mutta haluaisin "2 * 2", joista kumpikin lukuarvo on yo. koodin mukaisesti randomilla arvottu ja välissä tekstinä tuo tähti. Apuja?

13

1464

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Okei, nyt sain tämmösellä toimimaan

      Sub Kertotaulu()
      Dim a As Integer

      For i = 1 To 10
      a = Rnd * 10 1
      b = Rnd * 10 1
      Cells(i 1, 3) = a & " * " & b

      Next

      End Sub

      Mutta, b luku tulostuu desimaalien kanssa. Miten ne saisi pois?

      Näyttää siis tyyliin tältä: 2 * 6,5464577

    • Anonyymi

      Miksi? Yhdessä cellissä kasku: =(RAND()*10 1)*(RAND()*10 1) antaa ko kertolaskun tuloksen. Tai:

      A1: =RAND()*10 1
      B1: =RAND()*10 1
      C1: =A1 & "*" & B1

      Jossa C1 on täsmälleen kysytty teksttijono.

    • Anonyymi

      Ei antanut. Ja tää pitää tehdä ohjelmoinnilla, ei funktiolla.

      • Anonyymi

        "Ja tää pitää tehdä ohjelmoinnilla"

        Miksi? Miksi pitää tehdä vaikeimman kautta?

        "Ei antanut"

        Kyllä antaa. Kasku RAND ei anna aina samaa arvoa.


      • Anonyymi
        Anonyymi kirjoitti:

        "Ja tää pitää tehdä ohjelmoinnilla"

        Miksi? Miksi pitää tehdä vaikeimman kautta?

        "Ei antanut"

        Kyllä antaa. Kasku RAND ei anna aina samaa arvoa.

        Se, että sinä et keksi syytä, miksi joku asia pitäisi tehdä ohjelmoimalla, ei tarkoita, ettei ole mitään syytä tehdä sitä ohjelmoimalla.

        Ohjelmoinnilla toteutettuna solussa on lopulta vain tekstiä, ei kaava, joka lakkaa olemasta kun joku kirjoittaa jotain sen päälle. Jospa tarkoitus on vaikkapa antaa ala-astelaiselle harjoitustehtäväksi läjä kertolaskutehtäviä, joihin pitäisi kirjoittaa vastaus.

        Tai jos haluaa, että solujen sisältö pysyy samana vaikka muualle taulukkoon tekisi muutoksia. RAND arvotaan uudestaan joka kerta kun minkä tahansa solun arvoa muutetaan. Luultavasti on toivottavaa, että kertolaskut pysyvät samana senkin jälkeen kun niihin kirjoitetaan vastaus.


    • Anonyymi

      En nyt ala väitellä miksi pitää, tässä tapauksessa vain pitää.

      Laitoin tuon ihan fuktiona niin tulosti #NIMI-herjan.

      • Anonyymi

        Eli olet jäärä.


    • Anonyymi

      No se nyt et vaikuta siihen, että ei toiminut. :D

    • Anonyymi

      Tee funktio, esim:

      function satunnaiset(alaraja, ylaraja)
      eka = Int((ylaraja-alaraja 1)*Rnd alaraja)
      toka = Int((ylaraja-alaraja 1)*Rnd alaraja)
      satunnaiset = eka & " * " & toka
      end function

      Ja sitten laitat soluun tyyliin:
      =satunnaiset(1;10)

      Josta voi seurata vaikka:
      5 * 9

      • Anonyymi

        Sen sijaan, että kirjoittaa soluun "=satunnaiset(1;10)", se (aloituksesta päätellen) kannattaa tehdä makron puolella:
        SOLU (esim A1) = satunnaiset(1;10)


      • Anonyymi
        Anonyymi kirjoitti:

        Sen sijaan, että kirjoittaa soluun "=satunnaiset(1;10)", se (aloituksesta päätellen) kannattaa tehdä makron puolella:
        SOLU (esim A1) = satunnaiset(1;10)

        Riippuu tietysti käyttötarkoituksestakin. Makro on kertaluonteinen erikseen ajettava koodinpätkä, mutta funktiota voi uudelleenkäyttää missä solussa tahansa, ja tehdä siihen viittauksiakin. Esimerkiksi raja-arvot voi laittaa muihin soluihin, ja käyttää niitä parametrina funktiossa.


      • Anonyymi
        Anonyymi kirjoitti:

        Riippuu tietysti käyttötarkoituksestakin. Makro on kertaluonteinen erikseen ajettava koodinpätkä, mutta funktiota voi uudelleenkäyttää missä solussa tahansa, ja tehdä siihen viittauksiakin. Esimerkiksi raja-arvot voi laittaa muihin soluihin, ja käyttää niitä parametrina funktiossa.

        Toki, ja juuri sitä tarkoitin. Jos kaavan kirjoittaminen soluun olisi vaihtoehto, niin ei aloittaja kyselisi täällä neuvoja tuon toteuttamiseksi VBA:lla. Luultavasti hän siis haluaa, että solussa on arvonnan jälkeen tekstinä nuo kertolaskut.

        Ja voihan makronkin ajaa uudestaan. Ei se ole sen kertakäyttöisempi kuin kaava solussa. Makrossakin parametrit voi hakea soluista tai kirjoittaa suoraan makroon, ihan kuinka haluaa.

        Jos kaava on kelvollinen vaihtoehto, niin se on tietysti helpompi, mutta jos haluaa, että arvonnan jälkeen soluissa on tekstinä kertolaskuja, niin kaavat eivät tietenkään kelpaa.


      • Anonyymi
        Anonyymi kirjoitti:

        Toki, ja juuri sitä tarkoitin. Jos kaavan kirjoittaminen soluun olisi vaihtoehto, niin ei aloittaja kyselisi täällä neuvoja tuon toteuttamiseksi VBA:lla. Luultavasti hän siis haluaa, että solussa on arvonnan jälkeen tekstinä nuo kertolaskut.

        Ja voihan makronkin ajaa uudestaan. Ei se ole sen kertakäyttöisempi kuin kaava solussa. Makrossakin parametrit voi hakea soluista tai kirjoittaa suoraan makroon, ihan kuinka haluaa.

        Jos kaava on kelvollinen vaihtoehto, niin se on tietysti helpompi, mutta jos haluaa, että arvonnan jälkeen soluissa on tekstinä kertolaskuja, niin kaavat eivät tietenkään kelpaa.

        Niin olisihan tuon voinut tehdä suoraan valmisfunktioilla, vaikka:

        =CONCATENATE(RANDBETWEEN(1;10);" * ";RANDBETWEEN(1;10))

        Vba:llahan omat funktiotkin tehdään siellä samassa paikassa kuin makrotkin. Makrojen etu on sekin, ettei solujen arvot muutu päivitettäessä taulukkoa. Tosin funktion arvothan saa kopioimalla ja liittämällä pelkät arvot myös tekstiksi. Yksi funktioiden hyöty on, ettei tarvitse näperrellä koodin puolella niin usein.

        Molempi parempi.


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

    Luetuimmat keskustelut

    1. Tänään pyörit ajatuksissa enemmän, kun erehdyin lukemaan palstaa

      En saisi, silti toivon että sinä vielä palaat ja otetaan oikeasti selvää, hioituuko särmät ja sulaudummeko yhteen. Vuod
      Ikävä
      22
      4914
    2. Huomenta ihana

      Kauniskasvoinen ihanuus 😘 saan sut vielä
      Ikävä
      20
      3985
    3. Hei rakas...

      Miten on työpäivä sujunut? Rakastan sinua 💗
      Ikävä
      27
      2331
    4. Edelleen sitä on vaikea uskoa

      Että olisit oikeasti rakastunut muhun
      Ikävä
      34
      2134
    5. Toiveikas vai toivoton

      torstai? Ajatuksia?
      Ikävä
      37
      1938
    6. Vitsi mihin menit. Heti takasin.

      Mä näin sut tuu takasin! Oli kiire, niin en ehtiny sin perään!
      Ikävä
      15
      1828
    7. En ole koskaan kokenut

      Ennen mitään tällaista rakastumista. Tiedän että kaipaan sinua varmaan loppu elämän. Toivottavasti ei tarvitsisi vain ka
      Ikävä
      19
      1547
    8. Mukavaa päivää

      Mun rakkauden kohteelle ❤️ toivottavasti olet onnellinen
      Ikävä
      12
      1471
    9. Voi ei! Jari Sillanpää heitti keikan Helsingissä - Hämmästyttävä hetki lavalla...

      Ex-tangokuningas on parhaillaan konserttikiertueella. Hän esiintyi Savoy teatterissa äitienpäivänä. Sillanpää jakoi kons
      Suomalaiset julkkikset
      19
      1185
    10. Kerranki asiat oikein

      Ilkka ja muut pienpuolueeet...teitte hyvän työn kun valitsitte pätevän henkilön virkaan eikä kepulle passelia!! Jatkakaa
      Haapavesi
      10
      1124
    Aihe