Excell Karar Yapıları ( İf-Else )

Katılım
8 Ağustos 2018
Mesajlar
9
Excel Vers. ve Dili
Excell 2010
Merhaba, excell formüllerinde karar yapılarını kullanabilir miyim ?
Mesela seçtiğim sütunda 'a' harfi ile başlayan hücrelerin 'Ahmet' dönüştürülmesini istiyorum mümkün mü ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,741
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Başka bir sütunda bu işlemi yapabilirsiniz.

Kod:
=EĞER(SOLDAN(A1;1)="a";"Ahmet";A1)
 

Necdet

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

Alternatif Olsun. Korhan bey çözümü vermiş.

1. çözüm A sütunun Baş harfi "a" olanları süzer ve tümünü Ahmet yapar.
2. çözüm de ise tüm hücreler a harfi ile başladığı kontrol eder, öyleyse Ahmet yapar.

Kod:
Sub Degistir1()

    Range("A1").AutoFilter
    ActiveSheet.Range("$A$1:$A$24").AutoFilter Field:=1, Criteria1:="=a*", _
        Operator:=xlAnd
    Columns("A:A").SpecialCells(xlCellTypeConstants, 23).Offset(1, 0).FormulaR1C1 = "Ahmet"
    Range("A1").AutoFilter
    
End Sub
Kod:
Sub Degistir2()

    Dim i   As Long
    
    Application.ScreenUpdating = False
    
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        If Cells(i, "A") Like "a*" Or Cells(i, "A") Like "A*" Then Cells(i, "A") = "Ahmet"
    Next i
    
    Application.ScreenUpdating = True
    
End Sub
 
Katılım
8 Ağustos 2018
Mesajlar
9
Excel Vers. ve Dili
Excell 2010
Başka bir sütunda bu işlemi yapabilirsiniz.

Kod:
=EĞER(SOLDAN(A1;1)="a";"Ahmet";A1)
Merhaba,

Alternatif Olsun. Korhan bey çözümü vermiş.

1. çözüm A sütunun Baş harfi "a" olanları süzer ve tümünü Ahmet yapar.
2. çözüm de ise tüm hücreler a harfi ile başladığı kontrol eder, öyleyse Ahmet yapar.

Kod:
Sub Degistir1()

    Range("A1").AutoFilter
    ActiveSheet.Range("$A$1:$A$24").AutoFilter Field:=1, Criteria1:="=a*", _
        Operator:=xlAnd
    Columns("A:A").SpecialCells(xlCellTypeConstants, 23).Offset(1, 0).FormulaR1C1 = "Ahmet"
    Range("A1").AutoFilter
   
End Sub
Kod:
Sub Degistir2()

    Dim i   As Long
   
    Application.ScreenUpdating = False
   
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        If Cells(i, "A") Like "a*" Or Cells(i, "A") Like "A*" Then Cells(i, "A") = "Ahmet"
    Next i
   
    Application.ScreenUpdating = True
   
End Sub


*
Biraz daha detaylandırayım,
3000 satırlık bir sütunda eleman isimleri kodlandırılmış, mesela toplam 6 eleman var,
1- Ahmet
2- Burcu
3- Ege
4- Ceren
5- Kemal
6- Murat
Bu şekilde elemanlar var , veriler bir programdan excelle çekildiği için, eleman isimleri kodlanmış.
Mesela burcu için b0001,b0002,b0003,b0004 , ahmet için a0001, a0002 ... şeklinde kodlar kullanılmış , ben a ile başlayanları "Ahmet", b ile başlayanları "Burcu" şeklinde tüm eleman kodlarını isime çevirmek istiyorum, anladığım kadarıyla yeni sütun oluşturucağım, bu sütunda karar yapısı kullanacağım, pekala yukarıda yazdığınız kodu çoklu kullanabilir miyim? mesela en üst sütuna 'a'ları Ahmet yap, 'b'leri Burcu yap ... şeklinde tüm elemanlar için yazsam tüm satırlara uygular mı ?
Kusura bakmayın uzun uzadı yazdım ama excelle detaylarıyla hakim değilim.
 

Necdet

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

Aşağıdaki kodları kendinize uyarlayınız.
Doğrudan Sütun üzerinde işlem yapar, ayrı bir sütun kullanmak isterseniz cells(i,"A")= "Ahmet" yerine cells(i, "B") = "Ahmet" olarak değiştiriniz.

Kod:
Sub Degistir2()

    Dim i   As Long
        a   As String
    
    Application.ScreenUpdating = False
    
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        a = UCase(Left(Cells(i, "A"), 1))
        
        If a = "A" Then
            Cells(i, "A") = "Ahmet"
        ElseIf a = "B" Then
            Cells(i, "A") = "Burcu"
        ElseIf a = "C" Then
            Cells(i, "A") = "Ceyhan"
        End If
    Next i
    
    Application.ScreenUpdating = True
    
End Sub
 
Katılım
8 Ağustos 2018
Mesajlar
9
Excel Vers. ve Dili
Excell 2010
Merhaba,

Aşağıdaki kodları kendinize uyarlayınız.
Doğrudan Sütun üzerinde işlem yapar, ayrı bir sütun kullanmak isterseniz cells(i,"A")= "Ahmet" yerine cells(i, "B") = "Ahmet" olarak değiştiriniz.

Kod:
Sub Degistir2()

    Dim i   As Long, _
        a   As String
  
    Application.ScreenUpdating = False
  
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        a = UCase(Left(Cells(i, "A"), 1))
      
        If a = "A" Then
            Cells(i, "A") = "Ahmet"
        ElseIf a = "B" Then
            Cells(i, "A") = "Burcu"
        ElseIf a = "C" Then
            Cells(i, "A") = "Ceyhan"
        End If
    Next i
  
    Application.ScreenUpdating = True
  
End Sub
Merhaba, vaktinizi alıyorum kusura bakmayın, bu kodu tam olarak nereye yazıyoruz :)
 
Moderatör tarafında düzenlendi:
Katılım
8 Ağustos 2018
Mesajlar
9
Excel Vers. ve Dili
Excell 2010
Makro kullanımını yapamadım,
=EĞER(SOLDAN(A1;1)="a";"Ahmet";A1) şu formülü 4-5 isim için kullanmak istiyorum iç içe kullanım yapabilir miyim bu formülde ?
 
Katılım
8 Ağustos 2018
Mesajlar
9
Excel Vers. ve Dili
Excell 2010
Yardımcı olan herkese teşekkürler , sorunu çözdüm:
=EĞER(SOLDAN(A1;1)="a";"Ahmet";A1) burada A1 ile bitirmek yerine Ahmet hemen sonra tekrar eğerle devam ediyor.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,490
Excel Vers. ve Dili
Ofis 365 Türkçe
Makro kullanımını yapamadım,
=EĞER(SOLDAN(A1;1)="a";"Ahmet";A1) şu formülü 4-5 isim için kullanmak istiyorum iç içe kullanım yapabilir miyim bu formülde ?
Yapamazsınız zaten. Çünkü hatalar vardı.
Makroda karşılaştırmada Büyük/Küçük Harf duyarlıdır. O yüzden ilk karakteri Büyük harfe çevirim If'lerde hep büyük harf kullandım.
Siz ise bazen büyük bazen küçük harf kullanmışsınız. Özelden gönderdiğiniz kodlara göre.

Ayrıca uyarmıştım, kodda hata var onu düzelttim, tekrar kopyalayın dedim, onu da yapmamışsınız.
Kodların son hali :

Kod:
Sub Degistir2()

    Dim i As Long
    Dim a As String
   
    Application.ScreenUpdating = False
   
    For i = 2 To Cells(Rows.Count, "E").End(3).Row
   
        a = UCase(Left(Cells(i, "E"), 1))
       
        If a = "N" Then
            Cells(i, "N") = "Nurhan"
        ElseIf a = "B" Then
            Cells(i, "M") = "Murat"
        ElseIf a = "Y" Then
            Cells(i, "Y") = "Yasin"
        ElseIf a = "C" Then
            Cells(i, "D") = "Depo"
        End If
    Next i
   
    Application.ScreenUpdating = True

End Sub
 
Üst