Hücre Özel Formatı

Engineerist34

Altın Üye
Katılım
8 Ekim 2012
Mesajlar
41
Excel Vers. ve Dili
2016 Professional 64bit
Herkese Merhabalar,
Elimde bir kaç excel dosyası var ve bu dosyalardaki Birim içeren tüm sütünler biçimlendirilmemiş.
Yani kg olan ifadeleri rakamların sonuna elle eklemişler. 500 kg gibi. Bunları tek tek hücre biçimlendirmeden #.##0 "kg" formatında yaptığımda sorun yok. Matematiksel işlemleri yapabiliyorum.
221889

Ancak tabiki yüzlerce satırı böyle yapmak yada Biçim boyacısıyla formatlamak uzun zaman alıyor.
Aşağıdaki gibi bir kod denedim, kg ifadesini siliyorum ama formatlama kısmında iç içe çift tırnak olduğu için hata veriyor.

Kod:
Dim z As Integer
Range("E1").Select
For z = 1 To 587
If InStr(1, (Range("E" & z).Value), "kg") > 0 Then
ActiveCell.Value = Replace(ActiveCell.Value, "kg", "")
ActiveCell.NumberFormat = "#.##0 "kg""
Else
ActiveCell.Offset(1, 0).Select
End If
Next z
Aşağıdaki resimde kırmızı ile işaretlenen hatalı kod kısmı..

221890

Doğru formatlamayı nasıl yapabilirim, yardımcı olabilirseniz çok sevinirim.

Şimdiden Teşekkür Ederim.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
2,286
Excel Vers. ve Dili
2010 - Türkçe 64 Bit
Merhaba,
O satırı
Kod:
ActiveCell.NumberFormat = "#.##0 kg"
bu hale getirmeniz yeterli olacaktır.
İyi çalışmalar
 

Engineerist34

Altın Üye
Katılım
8 Ekim 2012
Mesajlar
41
Excel Vers. ve Dili
2016 Professional 64bit
Tevfik Bey,
Cevabınız için teşekkür ederim ama bunu denedim daha önce de ama hep aynı hatayı alıyorum.

221892

Hata içren kod ise böyle işaretleniyor.

221893

Teşekkürler
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
13,144
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Verilerinizi görmediğimiz için afaki yazıyorum. Eğer Tüm sütunda sizin dediğiniz gibi 500 Kg yazıyorsa :
Bul ve Değiştir'den (Ctrl+H) Aranan "Boşluk ve Kg"
Yerine konacak ise boş olsun.
Tümünü değiştir.

Sonra sütunu seçip ilk mesajdaki gibi biçimlendirebilirsiniz.
Makroya da gerek kalmaz.

Tabii dediğim gibi başka olasılık yok ise.
 

Engineerist34

Altın Üye
Katılım
8 Ekim 2012
Mesajlar
41
Excel Vers. ve Dili
2016 Professional 64bit
Necdet Bey Merhaba,
Şöyle bir durum var, ürün miktarlarının yazıldığı sütunda sadece KG olarak ifadeler yok. Adet, litre, parça gibi birkaç farklı birim var. Ben bu kod mantığyla diğerlerini de tek bir seferde çözmek istiyorum. Yoksa bence de sizin deiğiniz gibi daha kolay ve mantıklıydı ama böyle olunbca sıkıntı oluyor.
 
Katılım
15 Aralık 2008
Mesajlar
71
Excel Vers. ve Dili
excel 2010
Metni Sütunlara Dönüştür denediniz mi?
 

Engineerist34

Altın Üye
Katılım
8 Ekim 2012
Mesajlar
41
Excel Vers. ve Dili
2016 Professional 64bit
Muysun35, konunun daha iyi anlaşılması açısından, daha basit bir excel dosyası yükledim. Ne demek istediğim daha iyi anlaşılacaktır.
Birde benzer konudan muzdatip bir çok kişi varmış yabancı forumlarda gördüm. Örneğin hücre değerini "kg/h", "m³/gün" yada "km/h" gibi birimlere çevirmek isteyenler olmuş.
Ama şu şekilde çözüldüğünü idda eden biri olmuş.



hücre formatlamasına izin verilmesi gerekiyormuş. Bu şekilde yada aşağıdaki kod ile düzeltebilirsiniz denmiş. Ben üstteki pencereyi bulamadım ama alttaki kodu kullandım. O da işe yaramadı. :/

Kod:
ActiveSheet.Protect AllowFormattingCells:=True
İlginiz için ayrıca teşekkür ederim. Eğer cevabı bulursam burda paylaşacağım.
 

Ekli dosyalar

Katılım
15 Aralık 2008
Mesajlar
71
Excel Vers. ve Dili
excel 2010
Muysun35, konunun daha iyi anlaşılması açısından, daha basit bir excel dosyası yükledim. Ne demek istediğim daha iyi anlaşılacaktır.
Birde benzer konudan muzdatip bir çok kişi varmış yabancı forumlarda gördüm. Örneğin hücre değerini "kg/h", "m³/gün" yada "km/h" gibi birimlere çevirmek isteyenler olmuş.
Ama şu şekilde çözüldüğünü idda eden biri olmuş.



hücre formatlamasına izin verilmesi gerekiyormuş. Bu şekilde yada aşağıdaki kod ile düzeltebilirsiniz denmiş. Ben üstteki pencereyi bulamadım ama alttaki kodu kullandım. O da işe yaramadı.

Bahsettiğiniz bu pencere GÖZDEN GEÇİR > SAYFAYI KORU altından çıkıyor.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
13,144
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Aşağıdaki kodları dener misiniz? Bakalım doğru mu anlamışım.

Kod:
Sub Makro1()
    
    Dim i As Long
    Dim d As Variant
    
    For i = 1 To Cells(Rows.Count, "A").End(3).Row
    
        If IsNumeric(Cells(i, "A")) = False Then
        d = Split(Cells(i, "A"), " ")
        
        If IsNumeric(Trim(d(0))) Then
        
            With Cells(i, "A")
                d(0) = Replace(d(0), ".", "")
                d(0) = Replace(d(0), ",", ".")
                d(1) = Trim(d(1))
                .Value = d(0)
                .NumberFormat = "#,##0.00 """ & d(1) & """"
            End With
            
        End If
        
        Else
        
            Cells(i, "A").NumberFormat = "#,##0.00"
            
        End If
    
    Next i
    
End Sub
 

Engineerist34

Altın Üye
Katılım
8 Ekim 2012
Mesajlar
41
Excel Vers. ve Dili
2016 Professional 64bit
Necdet Bey çok teşekkür ederim.
Ellerinize sağlık.. Diğer birimlere de uydurmaya çalışacağım ama "kg" tanımı sayı ile tam birleşik durumda ise yani örneğin 600kg olarak yazılmış ise ise yaramıyor :/
İyi Çalışmalar Dilerim..
 
Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
13,144
Excel Vers. ve Dili
Ofis 365 Türkçe
Necdet Bey çok teşekkür ederim.
Ellerinize sağlık.. Diğer birimlere de uydurmaya çalışacağım ama "kg" tanımı sayı ile tam birleşik durumda ise yani örneğin 600kg olarak yazılmış ise ise yaramıyor :/
İyi Çalışmalar Dilerim..
Mevcut şartları bilmeyince anca o kadar fikir yürütebiliyorsunuz
 

Korhan Ayhan

Moderatör
Yönetici
Katılım
15 Mart 2005
Mesajlar
28,848
Excel Vers. ve Dili
OFFICE 2019 PRO TR
Alternatif;

C++:
Private Sub CommandButton1_Click()
    Dim Alan As Range, Veri As Range, Birim As Variant
    
    Birim = Application.InputBox("Değiştirmek istediğiniz birimi giriniz.")
    
    If Birim = "" Then
        MsgBox "Lütfen değiştirmek istediğiniz birimi giriniz.!", vbCritical
        Exit Sub
    End If
    
    For Each Veri In Range("E:E").SpecialCells(xlCellTypeConstants)
        If InStr(1, UCase(Replace(Replace(Veri.Value, "ı", "I"), "i", "İ")), _
            UCase(Replace(Replace(Birim, "ı", "I"), "i", "İ"))) > 0 Then
            If Alan Is Nothing Then
                Set Alan = Veri
            Else
                Set Alan = Application.Union(Alan, Veri)
            End If
        End If
    Next
    
    If Not Alan Is Nothing Then
        Alan.Select
        Alan.Replace Birim, "", , , False
        Alan.NumberFormat = "#,##0.00 """ & WorksheetFunction.Proper(Birim) & """"
        MsgBox "İşleminiz tamamlanmıştır.", vbInformation
    Else
        MsgBox "Birim bulunamadı!", vbInformation
    End If
End Sub
 

Engineerist34

Altın Üye
Katılım
8 Ekim 2012
Mesajlar
41
Excel Vers. ve Dili
2016 Professional 64bit
Korhan Bey gerçekten çok teşekkür ederim. Harika bir çözüm olmuş. yapılan değişklikleri de işaretlemesi mükemmel. Ellerinize sağlık :)
Keza Necdet Bey de aynı şekilde çok güzel bir yöntemle çözdüler saolsunlar.

Şunu gördüm ki bu platformda gerçekten çok kaliteli ve profesyonel insanlar var. Kolay kolay buraya basit şeyleri yazmamaya çalışıyorum. Önce forumlarda benzer konular var mı diye bakıyorum. Yabancı forumlarda dolaşıyorum, kendim deniyorum ama olmuyorsa biliyorum ki burada mutlaka sorumun cevabını alacağım. O yüzden sizleri boş ve basit şeylerle meşgül etmek istemiyorum.
Geçmişte de bir çok soruma sadece bu forumda cevap buldum. Emeği geçen herkes saolsun.
 
Üst