• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Soru Sütunda Enküçük Enbüyük Sayı

leonadies

Excel Derya Deniz Bizde Kulaç Atmaya Çalışıyoruz:)
Altın Üye
Katılım
12 Şubat 2015
Mesajlar
520
Excel Vers. ve Dili
Office 2016 TR 64 Bit Windows
Değerli üstadlar; Aşağıdaki kod ile sütundaki en küçük büyük sayıyı buluyorum ancak sayılarımın kurgusu;

26101-01
28305-10
32451-09

Şeklinde ve bu fonksiyon ile bulduramıyorum. Nasıl çözüm sağlamalıyım?

Kod:
WorksheetFunction.Small(Range("A:A"), 1)

WorksheetFunction.Large(Range("A:A"), 1)
 
Merhaba,

Verileriniz sayı olmadığı için sonuca ulaşamadınız.
28305-10 olan değeri 2830510 bu şekilde mi görmesi gerekiyor.
 
Örnekteki gibi soldan 5 hane olan kısımlar için aşağıdaki örnek kod bloğunu kullanabilirsiniz.
B1 hücresine küçük değeri, B2 hücresine büyük değeri yazar.
Kod:
Option Base 1
Sub ornek()
Dim dizi() As Integer
son = Range("A" & Rows.Count).End(xlUp).Row

ReDim dizi(son)
y = 1
For x = 1 To son
    dizi(y) = Left(Cells(x, "A"), 5)
    y = y + 1
Next x

buyuk = WorksheetFunction.Large(dizi, 1)
kucuk = WorksheetFunction.Small(dizi, 1)

Range("B1") = kucuk
Range("B2") = buyuk
Erase dizi
End Sub
 
Malesef olmadı

Option Base 1 Sub ornek() Dim dizi() As Integer son = Range("A" & Rows.Count).End(xlUp).Row ReDim dizi(son) y = 1 For x = 1 To son dizi(y) = Left(Cells(x, "A"), 5) y = y + 1 Next x buyuk = WorksheetFunction.Large(dizi, 1) kucuk = WorksheetFunction.Small(dizi, 1) Range("B1") = kucuk Range("B2") = buyuk Erase dizi End Sub
 
@Ömer hocam sayı şeklinde olmalı. Yani hedefim tire de olsa ilk 5 rakama bakarak bulması

Küçük olan C1 hücresine
Büyük olan C2 hücresine yazılacak
 
Sayın @faye_efsane ‘nin verdiği kodlarda;

Kod:
dizi(y) = Left(Cells(x, "A"), 5) yerine dizi(y) = Replace(Cells(x, "A"), "-", "")
Dim dizi() As Integer yerine Dim dizi() As Double

Yazarak deneyin.
 
Alternatif,

DİZİ formülleridir.

Küçük;
C++:
=MİN(--SOLDAN($A$1:$A$3;5))

Büyük;
C++:
=MAK(--SOLDAN($A$1:$A$3;5))
 
@Ömer hocam düzeltmeyi yaptım çalışıyor ancak sütunda boş satırlar olması durumunda hata veriyor. Birde "-" den sonraki kısmı atabiliriz de.
Kod:
Option Base 1
Sub ornek()
Dim dizi() As Double
son = Range("A" & Rows.Count).End(xlUp).Row

ReDim dizi(son)
y = 1
For x = 1 To son
    dizi(y) = Replace(Cells(x, "A"), "-", "")
    y = y + 1
Next x

buyuk = WorksheetFunction.Large(dizi, 1)
kucuk = WorksheetFunction.Small(dizi, 1)

Range("B1") = kucuk
Range("B2") = buyuk
Erase dizi
End Sub
 
@Korhan Ayhan hocam normal hücreye yazarak mı kullanılıyor? Algılayamadım. Derdim sütundaki en küçük ve en büyük sayılar.
 
Siz zaten hücre adresi vermiştiniz. O hücrelere uygulayacaksınız.
 
Hangi hücrenin karşısına yazsam o sayıyı veriyor. Amacıma ulaşamıyorum yani :) Bir yeri mi yanlış yapıyorum? @Korhan Ayhan
 
DİZİ formüle çevirdiniz mi?

C1 ve C2 hücrelerine uygulayacaksınız.
 
Dizi Formül ilk kez kullandım Korhan Hocam bildiğim birşey değildi internetten öğrendim. Ancak A sütunum dinamik olacak. Bu nedenle makro ile çözüm olsa sanırım daha iyi olacak. Formülünüz iş yapıyor onda sorun yok
 
Ama sorunuz FONKSİYONLAR bölümünde! O zaman başlığı taşımak lazım.
 
Olur Korhan Hocam kusura bakmayın. Elimdeki çıkarıma uygun olan yer olarak düşünmüştüm.
 
Yani hedefim tire de olsa ilk 5 rakama bakarak bulması
çalışıyor ancak sütunda boş satırlar olması durumunda hata veriyor. Birde "-" den sonraki kısmı atabiliriz de.
Merhaba, bu kodları kullanabilirsiniz. Denedim çalışıyor.
Kod:
Option Base 1
Sub ornek()
Dim dizi() As Integer
son = Range("A" & Rows.Count).End(xlUp).Row
dolusatir = WorksheetFunction.CountA(Range(Cells(1, "A"), Cells(son, "A")))

ReDim dizi(dolusatir)
y = 1
For x = 1 To son
If Cells(x, "A") = "" Then GoTo atla
    dizi(y) = Left(Cells(x, "A"), 5)
    y = y + 1
atla:
Next x

buyuk = WorksheetFunction.Large(dizi, 1)
kucuk = WorksheetFunction.Small(dizi, 1)

Range("C1") = kucuk
Range("C2") = buyuk
Erase dizi
End Sub
 
Teşekkürler @faye_efsane üstadım ancak Malesef aşağıdaki satırda hata alıyorum
dizi(y) = Left(Cells(x, "A"), 5)
 
Hata veren dosyayı ve hata görüntüsünü ekler misiniz?
 
Enkucuk-Enbuyuk.png

Buyrun
 

Ekli dosyalar

Qverflow hatası taşma anlamına geliyor.
A sütunundaki sayılar Integer tanımlamasındaki aralıktan büyük olduğu için bu hatayı veriyor.
Dim dizi() As Integer satırını Dim dizi() As Long ya da Dim dizi() As Double olarak değiştiriniz.
 
Geri
Üst