Soru sayıyaçevirme macrolarındaki sorun

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
739
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Arkadaşlar birçok macro buldum denedim olanlar aşırı yavaş çalıştı,bazıları hata verdi. Ekteki sayfadaki tüm alanları otomatik olarak sayıya dönüştürmek istiyorum. Alan satır sayısını örnek için az tuttum 5000'e kadar gidebiliyor. En hızlı hangi macro ile çevirebiliriz?

Teşekkürler..
 

Ekli dosyalar

Greenblacksea53

Altın Üye
Katılım
5 Ocak 2019
Mesajlar
572
Excel Vers. ve Dili
Ofis 365 Tr
Altın Üyelik Bitiş Tarihi
05-01-2025
C++:
Sub TumSutunlariSayiyaDonustur()
    Dim huc As Range
    Dim h As Range
    Dim sonDoluHuc As Range
    Dim sutun As Integer
    
 
    For sutun = 1 To ActiveSheet.UsedRange.Columns.Count
        Set sonDoluHuc = ActiveSheet.Cells(ActiveSheet.Rows.Count, sutun).End(xlUp)
        If sonDoluHuc.Row = 1 Then
            GoTo SonrakiSutun
        End If
    For Each h In Range(Cells(1, sutun), sonDoluHuc)
        
            On Error Resume Next
            h.Value = CDbl(h.Value)
            On Error GoTo 0
    Next h
        
SonrakiSutun:
    Next sutun
End Sub
Mödül olarak ekleyip çalıştırın tüm hücreyi sayıya çevirecek.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
Merhaba

Bu tür işlerde makroya gerek yok.
Herhangi bir hücreye 1 yazın, kopyalayın, Tabloyu seçin, özel yapıştır, çarp
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
739
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
C++:
Sub TumSutunlariSayiyaDonustur()
    Dim huc As Range
    Dim h As Range
    Dim sonDoluHuc As Range
    Dim sutun As Integer
   

    For sutun = 1 To ActiveSheet.UsedRange.Columns.Count
        Set sonDoluHuc = ActiveSheet.Cells(ActiveSheet.Rows.Count, sutun).End(xlUp)
        If sonDoluHuc.Row = 1 Then
            GoTo SonrakiSutun
        End If
    For Each h In Range(Cells(1, sutun), sonDoluHuc)
       
            On Error Resume Next
            h.Value = CDbl(h.Value)
            On Error GoTo 0
    Next h
       
SonrakiSutun:
    Next sutun
End Sub
Mödül olarak ekleyip çalıştırın tüm hücreyi sayıya çevirecek.

Bunu buldum ancak tek tek yaptığı için çok zaman alıyor. 1 dosyayı çevirmesi 10 dk dan fazla sürüyor. Excel'de sayıyadönüştür gibi hızlı yapan bir macro arıyorum hocam
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
739
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Merhaba

Bu tür işlerde makroya gerek yok.
Herhangi bir hücreye 1 yazın, kopyalayın, Tabloyu seçin, özel yapıştır, çarp
Bu işlem hergün ve 10 ayrı dosyadan yapılan birşey olduğu için hergün aynı işlemle uğraşmamak için sayfada bulunan diğer macrolara ekleyerek hızlıca olması amacıyla bu şekilde birşey istiyorum
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Örnek dosyanıza göre aşağıdaki kodu deneyin.

Kod:
Sub sayiyacevir()

Set s1 = Sheets("Sheet1")

sonsat = s1.Cells(Rows.Count, "A").End(3).Row

s1.Range("A2:W" & sonsat) = s1.Range("A2:W" & sonsat).Value

End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Ben de Levent beyin çözümünü ilk defa gördüm.
Yeni bir şey öğrenmiş olduk.
E o zaman kodu biraz daha kısaltalım.

Kod:
Sub cevir()

ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value

End Sub
 
Moderatör tarafında düzenlendi:

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Usedrange kullanımı daha güzel bir çözüm olmuş. Teşekkürler Necdet Bey.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,371
Excel Vers. ve Dili
Ofis 365 Türkçe
Ben Teşekkür ederim Levent bey.
Fikir sizdendi.
 
Üst