Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Lukuvälin ilmaiseminen If-lauseessa

Heglund [14.02.2013 17:08:44]

#

miten lasketaan yhteen lukujen 50-100 väliltä

Sub Task_1()
    Dim Row As Integer
    Dim Col As Integer
    Dim Summa As Long
    Dim Luku As Long
    Sheets("Task 1").Select
        For Row = 1 To 30
        For Col = 1 To 7
            If IsNumeric(Cells(Row, Col).Value) Then
                Luku = CLng(Cells(Row, Col).Value)
            If Luku >= 50 - 100 Then
                Summa = Summa + Luku
                End If
            End If
        Next
    Next
    Range("J6") = Summa
End Sub

Mod. huom: Alahan käyttää kooditageja!

kaviaari [14.02.2013 17:12:05]

#

If Luku >= 50 - 100 Then
  Summa = Summa + Luku
End If

Tuossa - markeeraa vähennyslaskua eikä väliä, joten käytännössä katsot onko luku suurempi kuin -50. Et voi keksiä hatusta syntakseja (esimerkiksi väleille) ja olettaa että ne kuuluvat ohjelmointikieleen.

Kokeile koostaa uusi vertailulause seuraavalla ajatuksella: Luvut jotka ovat 50 ja 100 välillä ovat 1) suurempia kuin 50 ja 2) pienempiä kuin 100

neau33 [14.02.2013 18:53:29]

#

MOI Heglund!

vedätkö tuon kaiken ihan vaan omasta hatusta?

Sinulla on viritelmässäsi määritelty rivit 1 - 30 ja sarakkeet 1 - 7 elikä solualue on tiedossa joten...

Sub aliohjelma()

    Range("J6").Clear

    'tämä käy läpi kaikki alueen A1:G30 solut
    For Each solu In Range("A1:G30")
        'IsNumeric-funktiota ei tarvita koska Val-funktio palauttaa
        'tekstistä tai tyhjästä solusta arvon 0 joita ei edes "lisätä"
        'koska ehtolause huolehtii siitä, että vain ne lukuarvot jotka
        'ovat on vertailussa suurempia kuin '49 ja pienempiä kuin 101
        '(luvut väliltä 50 - 100) lisätään...
        If Val(solu.Value) > 49 And Val(solu.Value) < 101 Then
            'myöskään mitään ylimääräisiä 'summa' muuttujia ei tarvita
            Range("J6").Value = Val(Range("J6").Value) + solu.Value
        End If
    Next

End Sub

Heglund [14.02.2013 20:01:24]

#

En vedä hatusta. Haluan vain oppia koska käytän exceliä paljon töissä :) Huomaan Nea, että olet erittäin pätevä VBA:ssa ja jos olisin yrityksessä sellaisessa asemassa, että voisin palkata työntekin niin se olisi kyllä sinä! Eikä halvallakaan tarttisi tulla! Sulla on pirusti markkina-arvoa!!!!

Metabolix [14.02.2013 21:46:23]

#

Heglund kirjoitti:

[Nealla] on pirusti markkina-arvoa!!!!

Ah, kunpa koodarille maksettaisiin viiden minuutin koodista sama summa, joka muuten kuluisi niiden työntekijöiden palkkoihin, jotka tekisivät saman työn käsin... Tai edes yhtä paljon kuin sille työntekijälle, joka on huonoin tuloksin vääntänyt tunnin aivan ihmeellistä koodia, ennen kuin tulee pyytämään foorumilta apua aivan yksinkertaisimpiin alkeisiin. Valitettavasti maailma ei ole niin oikeudenmukainen: palkkaa maksetaan ensisijaisesti työajasta eikä lopputuloksesta.

ajv [15.02.2013 09:22:00]

#

[offtopic]
Heh, tulee mieleen ensimmäinen kesätyöpaikkani "alan hommissa". Mulle oli varattu koko kesä suht. ison komponenttitietokannan siivoomiseen. Käsipelillä siihen varmasti olisi se aika mennytkin, mutta kun jo silloin osasin vähän koodata ja ymmärsin tietokannoistakin jotain, niin sain homman tehtyä viikossa. Mutta tosiaan, enpä saanut siitä viikosta koko kesän palkkaa :D
[/offtopic]

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta