• DİKKAT

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

Soru Dizi içindeki verinin sayı formatı.

  • Konbuyu başlatan Konbuyu başlatan FERAZ
  • Başlangıç tarihi Başlangıç tarihi
Katılım
5 Kasım 2006
Mesajlar
603
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Merhaba.

Alttaki dosyada F1 e veri girince veriler G:I aralığında listeleniyor düşeyara gibi.
Benim sormak istediğim şu;

Koddaki brr(say, 3) = aa(y, 4) olan yere "#,##0.00" formatını uygulatmak.
Koda açıklama ekledim.

http://dosya.co/te185726s2ve/Test_68.xlsm.html

Kod:
Private Sub CommandButton1_Click()


    [G:Y] = ""
    
   On Error GoTo son
  
    Dim brr()

   Application.ScreenUpdating = False

    aa = [A1:D100000].Value
    say = 1
    xx = [F1]
        For y = 1 To 100000

            If aa(y, 1) = xx Then  'Hizli icin
            ReDim Preserve brr(1 To 100000, 1 To 4)
                brr(say, 1) = aa(y, 2)
                brr(say, 2) = aa(y, 3)
                brr(say, 3) = aa(y, 4)
'                brr(say, 3) = Format(aa(y, 4), "#,##0.00") 'Böyle yapinca Text olarak cikiyor sonuc :)
'                brr(say, 3) = CDbl(Format(aa(y, 4), "#,##0.00")) 'Böyle yapinca olmuyor :)
                say = say + 1
            End If
        Next
        Range("G1:I100000").Value = brr
'        Range("I1:I100000").NumberFormat = "#,##0.00"'Böyle olmasini istemiyorum
   Application.ScreenUpdating = True

    Erase aa: Erase brr
    Exit Sub
son:
   Application.ScreenUpdating = True
    Erase aa: Erase brr
End Sub
 
buyurun.:cool:
Kod:
brr(say, 3) = CDbl(aa(y, 4))
 
Hepsi sayı ve Genel formatta. Bu arada ReDim Preserve brr(1 To 100000, 1 To 4) burdaki 4 yerine 3 olmalıymış.
Yani sonuç olmadı format olayı.
 
Sanmıyorum.
Şöyle deneyin ve aa(y,4) içindeki değeri okuyun.
Bu satırı hata veren satırın bir üstüne yazın.:cool:
Kod:
msgbox aa(y,4)
 
Hata yok. mesela sonuç 100.007,00 çıkmalı 100007 yerine kod bitiminde.
Bu arada msgbox olayını denedim formatsız listeleniyor 100007 gibi.
 
Böyle deneyin.
Kod:
brr(say, 3) = aa(y, 4)
 
Formatnumber fonksiyonunu kullanın.
 
Böyle denedim I sütunu formatlandı.
Kod:
[G:Y] = ""
   
   On Error GoTo son
 
    Dim brr()

   Application.ScreenUpdating = False

    aa = [A1:D100000].Value
    say = 1
    xx = [F1]
        For y = 1 To 100000

            If aa(y, 1) = xx Then  'Hizli icin
            ReDim Preserve brr(1 To 100000, 1 To 3)
                brr(say, 1) = aa(y, 2)
                brr(say, 2) = aa(y, 3)
                brr(say, 3) = aa(y, 4)
'                brr(say, 3) = Format(aa(y, 4), "#,##0.00") 'Böyle yapinca Text olarak cikiyor sonuc :)
'                brr(say, 3) = CDbl(Format(aa(y, 4), "#,##0.00")) 'Böyle yapinca olmuyor :)
                say = say + 1
            End If
        Next
        Range("G1:I100000").Value = brr
        Range("I1:I100000").NumberFormat = "#,##0.00" 'Böyle olmasini istemiyorum
   Application.ScreenUpdating = True

    Erase aa: Erase brr
    Exit Sub
son:
   Application.ScreenUpdating = True
    Erase aa: Erase brr
 
Böyle denedim I sütunu formatlandı.
Kod:
[G:Y] = ""
  
   On Error GoTo son

    Dim brr()

   Application.ScreenUpdating = False

    aa = [A1:D100000].Value
    say = 1
    xx = [F1]
        For y = 1 To 100000

            If aa(y, 1) = xx Then  'Hizli icin
            ReDim Preserve brr(1 To 100000, 1 To 3)
                brr(say, 1) = aa(y, 2)
                brr(say, 2) = aa(y, 3)
                brr(say, 3) = aa(y, 4)
'                brr(say, 3) = Format(aa(y, 4), "#,##0.00") 'Böyle yapinca Text olarak cikiyor sonuc :)
'                brr(say, 3) = CDbl(Format(aa(y, 4), "#,##0.00")) 'Böyle yapinca olmuyor :)
                say = say + 1
            End If
        Next
        Range("G1:I100000").Value = brr
        Range("I1:I100000").NumberFormat = "#,##0.00" 'Böyle olmasini istemiyorum
   Application.ScreenUpdating = True

    Erase aa: Erase brr
    Exit Sub
son:
   Application.ScreenUpdating = True
    Erase aa: Erase brr
Range("I1:I100000").NumberFormat = "#,##0.00" 'Böyle olmasini istemiyorum
Bunu pasif yapmıştım en son çare olarak.
 
Tam analatabilmek için userform,textbox ve listbox ekledim.

Kodddaki
' For i = 0 To .ListCount - 1
' .List(i, 2) = Format(.List(i, 2), "##,0.00")
' Next

olan yeri iptal ettim.

Birde ilgili yerleri ReDim Preserve brr(1 To say, 1 To 3) ve .List = brr yapınca neden işlem olmuyor hata verip.
Say yerine 27 yazıncada listboxtta boş yerlerde listeleniyor.

http://www.dosya.tc/server15/rph38z/Deneme_68.rar.html

Kod:
Sub xxx()

   On Error GoTo son
    Dim brr()

   Application.ScreenUpdating = False

With Me.ListBox1

    .ColumnCount = 4
    .ColumnWidths = "50;50;50;50"
    aa = [A1:D27].Value
 
    say = 1
        For y = 1 To 27

            If aa(y, 1) = CDbl(Me.TextBox1.Value) Then  'Hizli icin
             ReDim Preserve brr(1 To 3, 1 To say)
                brr(1, say) = aa(y, 2)
                brr(2, say) = aa(y, 3)
                brr(3, say) = aa(y, 4)
                say = say + 1
            End If
        Next
        .List = Application.Transpose(brr)

'    For i = 0 To .ListCount - 1
'        .List(i, 2) = Format(.List(i, 2), "##,0.00")
'    Next


   Application.ScreenUpdating = True

    Erase aa: Erase brr
    Exit Sub
son:
.Clear
   Application.ScreenUpdating = True
    Erase aa: Erase brr
    
End With

End Sub
 
Range("I1:I100000").NumberFormat = "#,##0.00"
Bu kodu kullanmadan halletmek istiyorum :)
O kıd son çare :)
 
Onu kullanmak istemirsanız,Önceden I sütunu Biçimlendirip kodu öyle çalıştırın.:cool:
 
Neyse sonra devam ederiz,düğün bizi bekliyor :) hocam.
 
Zafer Bey, düğünden sonra okumanız için yazıyorum;

Nümerik bir verinin kendisini formatlarsanız (biçimlendirirseniz), o veri artık "sayı" değil, "metin" olur. Zaten sizin orjinal kodunuzda da durum budur.

Eğer siz, hücrenin kendisini formatlarsanız (biçimlendirirseniz), veriyi biçimlendirilmiş olarak görürsünüz ama aslında hücredeki veri orjinali gibi "sayı" (nümerik) olarak durmaya devam eder ve sonradan matematiksel işlemlerde kullanılabilir.

Şimdi siz hangisinin olmasını istiyorsanız onu söyleyin de, size ona göre yardımcı olunsun.

Yani, kod çalıştıktan sonra örneğin I10 hücresindeki verinin görünür hali 125.689,35 olsun ama I10 hücresini seçince formül çubuğunda 125689,35 mi gözüksün yoksa; hem I10 hücresindeki görünür hali, hem de bu hücre seçildiğinde formül çubuğunda 125.689,35 mi gözüksün?

Birinci durumda I10 hücresindeki veri "sayı", ikinci durumda ise "metin" dir.

Ama, eğer sizin sorununuz; hücrede verinin "metin" olarak gözüktüğü durumlarda,hücrenin sol üst köşesindeki yeşil oku görmek istemiyorsanız o zaman; o hücrelerden birini seçin, yandaki "!" işaretli simgeye tıklayın, açılan menüden en son sıradaki seçeneği tıklayın (Error checking options). Karşınza gelecek düzenleme sayfasında "Error checking" başlığının altındaki "Enable background error checking" seçenğindeki onay işaretini kaldırın, o oklar bir daha ortaya çıkmaz.

Dediğim gibi, siz ilk önce verileri nasıl görmek istediğinize karar verin. Konu hakkında seçenekler bundan ibaret olup, başka da yapılabilecek bir şey olduğunu sanmıyorum .....

.
 
Son düzenleme:
Bu
Zafer Bey, düğünden sonra okumanız için yazıyorum;

Nümerik bir verinin kendisini formatlarsanız (biçimlendirirseniz), o veri artık "sayı" değil, "metin" olur. Zaten sizin orjinal kodunuzda da durum budur.

Eğer siz, hücrenin kendisini formatlarsanız (biçimlendirirseniz), veriyi biçimlendirilmiş olarak görürsünüz ama aslında hücredeki veri orjinali gibi "sayı" (nümerik) olarak durmaya devam eder ve sonradan matematiksel işlemlerde kullanılabilir.

Şimdi siz hangisinin olmasını istiyorsanız onu söyleyin de, size ona göre yardımcı olunsun.

Yani, kod çalıştıktan sonra örneğin I10 hücresindeki verinin görünür hali 125.689,35 olsun ama I10 hücresini seçince formül çubuğunda 125689,35 mi gözüksün yoksa; hem I10 hücresindeki görünür hali, hem de bu hücre seçildiğinde formül çubuğunda 125.689,35 mi gözüksün?

Birinci durumda I10 hücresindeki veri "sayı", ikinci durumda ise "metin" dir. Başka bir alternatif de olmaz......

.
Olabilir böyle.
I10 hücresindeki görünür hali, hem de bu hücre seçildiğinde formül çubuğunda 125.689,35 mi gözüksün?
 
Geri
Üst