Šta je novo?

Kako u jednoj koloni pomnoziti samo brojeve [Excel]

hedgehog

Slavan
Učlanjen(a)
10.01.2011
Poruke
1,038
Poena
225
Moja oprema  
CPU & Cooler
AMD FX 4300 [email protected] + Noctua NH-C12P SE14
Matična ploča
ASRock 970 Pro3 R2.0
RAM
HyperX Fury 2x8GB 1866MHz CL10
GPU
Radeon 5750 512Mb GDDR5
Storage
Samsung 850EVO 500GB, WD Blue WD5000AAKS 500GB 7200RPM
PSU
Corsair VX450 450W
Kućište
Cooler Master Elite 334 @CM fan 120mm + Arctic Cooling 92mm PWM
Monitor
ASUS VA24DQSB
Miš & tastatura
Gigabyte GM-6880 & Keychron K10 Pro
Laptop
HP Elitebook 845 G8 Win10 Pro
Mobilni telefon
Moto G72
Pristup internetu
  1. Mobilni internet
Potrebna mi je pomoc, posto sam malo zaribao sto se tice VBA, a nisam naisao na neku korisnu metodu u Excelu, osim da rucno sve obelezavam pa da sa onim paste special i multiply pomnozim.
Dakle kako bi izgledao neki macro koji bi mnozio samo brojeve u nekoj koloni sa vrednosc koju zadam. Ovo govroim iz razloga sto u praznim celijama ili u celijama sa tekstom ostanu nule, ako samo obelezim kolonu i odradim ono sa paste special..
 
Nisam 100% siguran šta hoćeš da uradiš, ali zvuči mi kao nešto što sam radio pre neki dan, pa da probamo...

=IF(ISNUMBER(A1);A1*$H$1;"")

Krećeš od ćelije A1, ISNUMBER proverava da li je u pitanju broj. Ako jeste množi ga sa zadatim brojem u ćeliji H1, ako nije vraća ti (skoro) praznu ćeliju.
Da li ti ovo završava posao?
 
Pa ako vraca praznu celiju, onda mi ne radi posao. Struktura kolone je takva da ide par celija sa tekstom, pa potom 10-ak sa brojevima i ponekom praznom celijom. I tako sve u preko vise od 1500 celija.
 
Pa ako vraca praznu celiju, onda mi ne radi posao. Struktura kolone je takva da ide par celija sa tekstom, pa potom 10-ak sa brojevima i ponekom praznom celijom. I tako sve u preko vise od 1500 celija.
najbolje bi bilo da okačis link ka primeru, ali, mislim da je kolega blizu onoga što želiš, ja bih samo dodao ovu formulu ukoliko želiš da ti prazne ćelije ili one sa tekstom ostanu nepromenjene:

=IF(ISNUMBER(A1),A1*$H$1,A1)
Krećeš od ćelije A1, ISNUMBER proverava da li je u pitanju broj. Ako jeste množi ga sa zadatim brojem u ćeliji H1, ako nije vraća ti original sadržaj te ćelije.
Ako to nije to što hoćeš, daj primer ili napiši šta tačno hoćeš da vrati za ćelije u kojima nije broj...
 
OK, hvala. Nije bas najelegantnije resenje posto moram da koristim jos jednu kolonu, ali svakako ce posluziti. :)
I da zeleo sam samo da uvecam za npr. 1.2 puta svaki od tih brojeva, a da mi pritom ostane sve kao i pre u koloni. Mislim na tekst i format.
 
Poslednja izmena:
OK, hvala. Nije bas najelegantnije resenje posto moram da koristim jos jednu kolonu, ali svakako ce posluziti. :)
I da zeleo sam samo da uvecam za npr. 1.2 puta svaki od tih brojeva, a da mi pritom ostane sve kao i pre u koloni. Mislim na tekst i format.
Ne moraš, pošto to izračunas u novoj koloni, samo nalepi po vrednostima u staru, i obriši novu...a, ako ti nije elegantno, ti pravi VBA code, to bar nije problem, samo pitanje je da li je to uloženo vreme vredno truda...
 
Evo probaj ovaj macro.

Kod:
Option Explicit
Sub calculateTotal()

    Dim wsData As Worksheet
    Dim wsDataStartingRow As Long
    Dim wsDataEndingRow As Long
    Dim wsDataWantedColumn As Long
    Dim wsDataCurrentValue As String
    Dim wsDataWantedSum As Double
    Dim wsDataMultiplier As Double
    
    Dim i As Integer
    
    ' Sheet na kojem zelis da nadjes sum, predpostavka da ti se podaci nalaze na prvom (1) sheetu
    Set wsData = Worksheets(1)
    
    ' Kolona za koju zelis sum, predpostavka da zelis da sumiras kolonu A (kolona 1)
    ' 1 je A, 2 je B, 3 je C ...
    wsDataWantedColumn = 1
    
    ' Pocetni red, predpostavka da zelis od pocetka da krenes
    wsDataStartingRow = 1
    
    ' Krajnji red, trenutno ide do poslednjeg reda u toj koloni
    wsDataEndingRow = wsData.Cells(Rows.Count, wsDataWantedColumn).End(xlUp).Row
    
    ' Pocetna vrednost sume
    wsDataWantedSum = 0
    
    For i = wsDataStartingRow To wsDataEndingRow
        
        ' Trenutna vrednost
        wsDataCurrentValue = Trim(wsData.Cells(i, wsDataWantedColumn).Value)
        
        ' Ukoliko je vrednost u celiji broj, dodaj taj broj na sumu
        If IsNumeric(wsDataCurrentValue) Then
            wsDataWantedSum = wsDataWantedSum + CDbl(wsDataCurrentValue)
        End If
        
    Next i
    
    ' Vrednost kojom treba pomnoziti dobijenu sumu, trenutno je stavljeno na celiju 1, 2 to je B1
    wsDataMultiplier = wsData.Cells(1, 2).Value
    
    ' Konacno trazena suma ti je u celiji 2, 2 to ti je B2
    wsData.Cells(2, 2).Value = wsDataWantedSum * wsDataMultiplier

End Sub

Mislim da mi je ovo prvi put posle par godina da napisem komentar na srpskom, tako da nadam se da nije mnogo smesno :)

Nadam se da ce ti pomoci. Pitaj ako te nesto zanima.
 
Probacu, deluje obecavajuce. Hvala ;)
 
Nazad
Vrh Dno