Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Mutt

    senior tag

    válasz vamzi #27223 üzenetére

    Hello,

    Ezt: [link] hogyan tudnám úgy átalakítani, hogy ne cellánként számoljon, hanem egy teljes tartományt? A teljes A oszlopon szeretném használni.

    Erre nem láttam választ, de két sort plusz kell. Itt az új kód.

    Function SumNums(cell As Range, Optional strDelim As String = " ") As Double
    Dim vNums As Variant, lngNum As Long, rngS As Range

    For Each rngS In cell 'új sor a tartományhoz
    vNums = Split(rngS, strDelim)
    For lngNum = LBound(vNums) To UBound(vNums) Step 1
    If InStr(1, vNums(lngNum), ",") > 0 Then vNums(lngNum) = Replace(vNums(lngNum), ",", ".")
    SumNums = SumNums + Val(vNums(lngNum))
    Next lngNum
    Next rngS 'új sor a tartományhoz
    End Function

    Ha a teljes A-oszlophoz akarod használni, akkor be tud lassulni, mert az üres mezőket is kiértékeli ezért érdemes plusz ellenőrzést ennek elkerülésére beletenni. Továbbá tuningolható, hogy a tizedesvesszőt tartalmazó számokat is kezelni tudja.

    Function SumNums(cell As Range, Optional strDelim As String = " ") As Double
    Dim vNums As Variant, lngNum As Long, rngS As Range
    Dim workrange As Range

    Set workrange = Intersect(ThisWorkbook.Sheets(cell.Parent.Name).UsedRange, cell)

    For Each rngS In workrange 'új sor a tartományhoz
    vNums = Split(rngS, strDelim)
    For lngNum = LBound(vNums) To UBound(vNums) Step 1
    If InStr(1, vNums(lngNum), ",") > 0 Then vNums(lngNum) = Replace(vNums(lngNum), ",", ".") 'tizedesvessző kezelés
    SumNums = SumNums + Val(vNums(lngNum))
    Next lngNum
    Next rngS 'új sor a tartományhoz
    End Function

    udv

Új hozzászólás Aktív témák