Moi
Eka viesti :)
Tuodaan X määrä rivejä taulukkoon esim A sarakkeeseen, soluihin 1-2000. Määrä vaihtelee. Tuotu solun arvo on tekstinä joka on kuitenkin lukuarvo.
Tarkoitus tehdä jäsentelyä / grafiikkaa tuodusta datasta toiselle välilehdelle niin että aina ensimmäistä välilehdestä luetaan arvoja.
Tekstikentän arvon saan muutettua lukuarvoksi, tähänkin meni hetki ennen kuin keksin miten se tehdään sattumatta ensimmäiseen talukukkoon.
Varsinainen ongelma. Miten luetaa ensimmäisen talukon A sarakkeen arvot toiselle välilehdelle vaikka ei tiedetä rivien todellista määrää. Voi tietysti tehdä kaavat koko alueelle riveistä 1-2000 mutta jos esimmäisen välilehden arvoja tuodaankin 2200 riviin asti ei saada kaikkia arvoja luettua toiseen välilehteen.
Voiko tehdä jonkin tarkastuksen että onko vielä seuraavassa solussa arvo ja luetaan se ja siirretään.. jne..
Exceliä pitää käyttää tässä hommassa, makrot mahdollisia.
Hannes
Ihan yleisesti, miksi se täytyy tallentaa tekstinä eikä lukuarvona?
Jos ne ihan lukuina on, niin koko A-sarakkeen voi summata =Summa(A:A)
Toki myös Makrolla (VBScriptillä) helppo toteuttaa
Dim r As Long r = 1 Dim summa As Double While Cells(r, 1).Value <> "" summa = summa + CDbl(Cells(r, 1)) r = r + 1 Wend
Tieto mistä luvut saadaan taulukkoon muuttaa solun tekstisoluksi.
käytän summa.jos.joukko funktiota tietojen laskentaan. Ehtoalueita tulee 2kpl ja saan summat laskettua (A:A) sarakkeesta muiden tietojen pohjalta kun luvut on saatu toiselle välilehdelle laskettavaksi.
Kaipaisin nyt apua miten toiselle välilehdelle saadaan siirrettyä ensimmäisen välilehden tekstikentässä olevat lukuarvot niin että ei tarvitsisi tehdä joka soluun kaavaa =lukuarvot!A1+0 .jne jolla saadaan lukuarvot kopioitua toiselle välilehdelle.
Onnistuu noinkin mutta kaavoja tulee tajuton määrä ja se että lukuarvojen määrä mahdollisesti paisuu tietää ongelmia.
Jos ne on talletettu tekstinä niin CTRL+A ja ensimmäisen solun kohdalla olevasta varoituspainikkeesta "Muunna luvuiksi"
Tai tosiaan tuo laittamani VBScript -makro lienee myös helppo toteuttaa.
Muuten hyvä vinkki mutta tuo ei ole vaihtoehto. Käyttäjiä useita, taulukkoa avataan usein. työhomma siis johon sekaantunut :(
Käyttäjien tarkoitus tarkastella graafia mikä on muodostunut, ei tehdä muuta ylimääräistä.
Voisi tuon kaavan laittaa koskemaan 60000 riviä mutta vaikuttaa viritykseltä...
Private Sub CommandButton1_Click() For Each solu In Taul1.Range("A1:A" & CStr( _ Taul1.Columns("A").SpecialCells(xlCellTypeLastCell).Row)) summa = summa + Val(Replace(solu.Text, ",", ".")) Next MsgBox summa End Sub
Kiitoksia, tätä pitää koittaa soveltaa!
Aihe on jo aika vanha, joten et voi enää vastata siihen.