• DİKKAT

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

Baska dosyada Max-Min Degeri bulma

  • Konbuyu başlatan Konbuyu başlatan zuzzu
  • Başlangıç tarihi Başlangıç tarihi
Katılım
28 Şubat 2011
Mesajlar
57
Excel Vers. ve Dili
Excel 2007
Arkadaslar merhaba,

Ekte 2 adet dosyam var.

Max_Min_bulma.xlsm dosyasi acildiginda icindeki makrolara bakabilirsiniz.

Daha önceden hazirladigim bir Userform var.
bu Userformun üstünde Listbox5 yer aliyor.
Listbox5'te Veriler.xlsx dosyasinin 9. satirindaki degerler alt alta siralanmis durumda.

Kullanici Listbox5'ten bir verinin üzerine tikladigi anda;
1. Veriler.xlsx dosyasini ac
2. Listbox5'ten secilmis verinin hangi kolonda oldugunu belirle (örn: PT123)
3. O kolonun 39. satirindan son satirina kadar olan hücrelerde minimum ve maksimum degeri bul
4. Bu degerleri Userformun Labellarina yazdir.


Takildigim nokta, bir türlü listbox5te secilen verinin Veriler.xlsx dosyasinin hangi kolonunda yer aldigini bulduramiyorum ve tabi kolonu bulunca da range belirleyemiyorum.

Yardimci olabilirseniz cok sevinirim.
Userformu ekleyemiyorum. Umarim ekledigim kisimlar yardimci olur.
Simdiden cok tesekkür ederim.
 

Ekli dosyalar

Arkadaslar,

Maksimum deger olan hücre degeri -155,247 olarak excelde gözükür. Ancak bu degeri userformdaki Label'a aktarirken -155247 seklinde yaziyor. Aradaki virgülü yazmiyor. Sebebi ne olabilir ve hangi özellikle degistirebilirim?
Min ve Max degeri string olarak algiliyor olabilir mi?

Deger örnegi verirsem;
5
5,1
5,44
5,44456
7,444

Bu sayilara Min uygularsam 5 cevabini verir. Max uygularsam 5,44456 cevabini verir.

Hücrede yazan karakter sayisina bakarak, buldugu en düsük karakter iceren hücre minimum degeri oluyor (5), en yüksek karakter iceren hücre maksimumdegeri oluyor (5,44456).
1.Bunlari string yerine nasil deger olarak tanimlatabilirim?
2. Min ve Max degerlerinin -273 ile +400 degerleri arasindaki degerlerden secmesini istiyorum ne eklemem lazim?



Kod:
With B_Temp_Dependence.ListBox5

        If .Selected(selected_title) = True Then
        
                For column_counter = 1 To LastColumn
            
                    column_title = choosesheet.Cells(9, column_counter).Value & " (" & choosesheet.Cells(10, column_counter).Value & ")"
                                         
                    If InStr(column_title, B_Temp_Dependence.ListBox5.Text) <> 0 Then
                        'Do
                        Set Start = choosesheet.Cells(39, column_counter)
                        Set Last = Start.End(xlDown)
                        
                        T_Max = WorksheetFunction.Max(Worksheets(1).Range(Start, Last))
                        T_Min = WorksheetFunction.Min(Worksheets(1).Range(Start, Last))
                        
                        'Loop Until T_Max <= 400 And T_Min >= -273 And T_Min <= 400
                        
                    Else
                    End If
                    
                    
           
              Next column_counter
 
Arkadaslar,

Maksimum deger olan hücre degeri -155,247 olarak excelde gözükür. Ancak bu degeri userformdaki Label'a aktarirken -155247 seklinde yaziyor. Aradaki virgülü yazmiyor. Sebebi ne olabilir ve hangi özellikle degistirebilirim?
Min ve Max degeri string olarak algiliyor olabilir mi?

Deger örnegi verirsem;
5
5,1
5,44
5,44456
7,444

Bu sayilara Min uygularsam 5 cevabini verir. Max uygularsam 5,44456 cevabini verir.

Hücrede yazan karakter sayisina bakarak, buldugu en düsük karakter iceren hücre minimum degeri oluyor (5), en yüksek karakter iceren hücre maksimumdegeri oluyor (5,44456).
1.Bunlari string yerine nasil deger olarak tanimlatabilirim?
2. Min ve Max degerlerinin -273 ile +400 degerleri arasindaki degerlerden secmesini istiyorum ne eklemem lazim?



Kod:
With B_Temp_Dependence.ListBox5

        If .Selected(selected_title) = True Then
        
                For column_counter = 1 To LastColumn
            
                    column_title = choosesheet.Cells(9, column_counter).Value & " (" & choosesheet.Cells(10, column_counter).Value & ")"
                                         
                    If InStr(column_title, B_Temp_Dependence.ListBox5.Text) <> 0 Then
                        'Do
                        Set Start = choosesheet.Cells(39, column_counter)
                        Set Last = Start.End(xlDown)
                        
                        T_Max = WorksheetFunction.Max(Worksheets(1).Range(Start, Last))
                        T_Min = WorksheetFunction.Min(Worksheets(1).Range(Start, Last))
                        
                        'Loop Until T_Max <= 400 And T_Min >= -273 And T_Min <= 400
                        
                    Else
                    End If
                    
                    
           
              Next column_counter

exceldeki digit sembolunuz virgul sanirim bunu nokta olark degistirerek denedinizmi acaba..
 
Evet digit sembolüm virgül ve bu sekilde kalmasi gerekiyor :-)

Bütün verileri nokta formatindan virgül formatina cevirdim. Nokta formatinda normal degerlerin 1000 katini gösteriyor.

Nasil bir cözüm önerebilirsiniz?
Degerleri String olarak degil de sayi olarak algilamasi icin ne gibi bir ekleme yapmam gerekli?
 
Zeynep Hanim excel seceneklerinizden advanced icerisinde use system seperator secenegi var buradan bir degistirip denermisiniz, bu zaten olmamasi gereken bir durum zaten dosyalarinizi incelemedim karisik geldi form ve veri goremedim dosyalarinizda sadece bir ongorude bulunuyorum sorun egerki buysa kodlarinizin basina bu sistem seperatorunu virgulden noktaya alan sonunada eski halien getiren kodlar getirebiliriz..
 
Mustafa Bey,

Dediginizi yaptim. Ancak bir degisiklik olmadi.
,-. ve .-, cesitleri denedim olmadi.

system separator zaten kullaniyormusum. Kullanmadan da denedim olmadi.

Ne eklememiz gerekiyor?
 
Dosyanizin herhangi bir bolumunde bu veriler varmi acaba ben indirdigim dosyalarda goremedim..
 
Dosyayi güncelledim ve Veriler dosyasina sonuclari karsilastirmali olarak yazdim.
 

Ekli dosyalar

Ben yeni dosyalardada verilerinize rastlayamadim.. simdi kodlardaki aciklamalarinizi okurken buldum.. 39 dan itibaren basliyormus. pardon..
 
Tekrardan merhabalar Zeynep Hanim;

Bu haliyle sorununuza sorun bulamadim, sorunu tam anlamiyla bu haliyle goremiyorum bi taraftan;

Fakat sorunu bir KTF kullanrak sizin cozmenize son bir yardimim belki olabilir diye yazmak istedim;

Kod:
Function Araliktaki_Maksimum_Deger(rCells As Range, MinNum, MaxNum)
Dim Myrange As Range
Dim vMax
Dim aryNums()
Dim i As Integer

ReDim aryNums(rCells.Count)
    For Each Myrange In rCells
     vMax = Myrange
        Select Case vMax
           Case MinNum + 0.01 To MaxNum - 0.01
             aryNums(i) = vMax
              i = i + 1
           Case Else
               Araliktaki_Maksimum_Deger = 0
           End Select
    Next Myrange
    Araliktaki_Maksimum_Deger = WorksheetFunction.Max(aryNums)
End Function

bu ktf sizin Araliktaki_Maksimum_Deger(range;-273;400) gibi bir kullanimda 400`den kucuk en buyuk sayiyi bulmanizi sagliyabilir, kodun

Araliktaki_Maksimum_Deger = WorksheetFunction.Max(aryNums)

bolumunu WorksheetFunction.Min(aryNums) olarak degistirip en kucuk sayiyi bulan bir ktf daha ekleyip bunu kodlarinizda kullanabilirsiniz.. Belki en azindan araliginizi belirledikten sonra tekrar bir dongu ihtiyaci duymayip aralik degiskeninizi bu ktf icerisinde dinamik halde kullanabilirsiniz, umarim yardimci olabilir, kolay gelsin..
 
Mustafa Bey

Cok tesekkür ederim, problemimle gercekten ilgilendiniz.

Ben bir denemeye calısayım, pek ümitli degilim basarabileceğimden ama bakalım :-)
 
sorularinizdaki myrange degisken bolumunu asabilmismiydiniz ? Yani anladigim kadariyla PT### halindeki bolumu bir match yapmaniz ve araligin sutun adresini buna gore belirlemeniz gerekiyordu, max min value`ye odakli baktigim icin ve tamamini goremedigim icin bu bolumu cozdunuzmu bilemiyorum, eger araligi belirleyebildiyseniz o myrange degiskenini bu ktf icerisine aldiginizda eklediginiz dosyaya gore cozumlenmeli.. sonucu yinede her halukarda iletirseniz sevinirim..
 
Geri
Üst