Conditional Formatting (Koşullu biçimlendirme)

Katılım
9 Mart 2007
Mesajlar
17
Excel Vers. ve Dili
2003 İngilizce
Merhaba,

yapmaya çalıştığım şey, A1 hücresinde yazan veriye göre B1 hücresi ona göre format alsın. Mesela A1 hücresinde X verisi varsa, B1 hücresine girceğim rakam otomatik YTL olsun, A1'de Y verisi varsa gireceğim rakam euro olsun. B1 hücresine veri girişi yapacağım için, o hücre üzerinde herhangi bir formül yazma şansım yok. Nasıl bir çözüm önerirsiniz? (Excel'i İngilizce kullaniyorum)
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Merhaba,

yapmaya çalıştığım şey, A1 hücresinde yazan veriye göre B1 hücresi ona göre format alsın. Mesela A1 hücresinde X verisi varsa, B1 hücresine girceğim rakam otomatik YTL olsun, A1'de Y verisi varsa gireceğim rakam euro olsun. B1 hücresine veri girişi yapacağım için, o hücre üzerinde herhangi bir formül yazma şansım yok. Nasıl bir çözüm önerirsiniz? (Excel'i İngilizce kullaniyorum)
Sayfanın kod bolümüne aşağıdaki kodları yazın.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [A:A]) Is Nothing Then Exit Sub
Satır = "B" & Target.Row & ":B" & Target.Row
Select Case Target
Case "": Range(Satır).NumberFormat = ""
Case "X": Range(Satır).NumberFormat = "#,##0.00 $"
Case "x": Range(Satır).NumberFormat = "#,##0.00 $"
Case "Y": Range(Satır).NumberFormat = "[$€-2] #,##0.00"
Case "y": Range(Satır).NumberFormat = "[$€-2] #,##0.00"
Case "Z": Range(Satır).NumberFormat = "[$$-409]#,##0.00"
Case "z": Range(Satır).NumberFormat = "[$$-409]#,##0.00"
End Select
End Sub

Bu kodlarla:
X-x YTL
Y-y Euro
Z-z $

yazdırabilirsiniz.

Örnek dosya ekte.

.
 
Katılım
9 Mart 2007
Mesajlar
17
Excel Vers. ve Dili
2003 İngilizce
Yardım için çok teşekkürler.

Kodu son olarak şu hale getirdim.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [G2]) Is Nothing Then Exit Sub
Satır = "M2"
Select Case Target
Case "": Range(Satır).NumberFormat = "#,##0.00 $"
Case "X": Range(Satır).NumberFormat = "[$€-2] #,##0"
Case "Y": Range(Satır).NumberFormat = "[$€-2] #,##0"
End Select
End Sub

Ancak son yapmaya çalıştığım şey şu. X ve Y olursa euro olsun, boş ya da başka birşey olursa YTL olsun. Bu kod ile boşu yaptım ama başka birşey olursada biraz takıldım. Son bir yardım çok makbule geçer.
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Yardım için çok teşekkürler.

Kodu son olarak şu hale getirdim.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [G2]) Is Nothing Then Exit Sub
Satır = "M2"
Select Case Target
Case "": Range(Satır).NumberFormat = "#,##0.00 $"
Case "X": Range(Satır).NumberFormat = "[$€-2] #,##0"
Case "Y": Range(Satır).NumberFormat = "[$€-2] #,##0"
End Select
End Sub

Ancak son yapmaya çalıştığım şey şu. X ve Y olursa euro olsun, boş ya da başka birşey olursa YTL olsun. Bu kod ile boşu yaptım ama başka birşey olursada biraz takıldım. Son bir yardım çok makbule geçer.
Aşağıdaki şekilde deneyin.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [G2]) Is Nothing Then Exit Sub
Satır = "M2"
Select Case Target
Case Is = "": Range(Satır).NumberFormat = "#,##0.00 $"
Case Is = "X": Range(Satır).NumberFormat = "[$€-2] #,##0"
Case Is = "Y": Range(Satır).NumberFormat = "[$€-2] #,##0"
Case Is <> "X": Range(Satır).NumberFormat = "#,##0.00 $"
Case Is <> "Y": Range(Satır).NumberFormat = "#,##0.00 $"

End Select
End Sub

.
 
Katılım
9 Mart 2007
Mesajlar
17
Excel Vers. ve Dili
2003 İngilizce
&#199;ok te&#351;ekk&#252;rler i&#351;imi g&#246;rd&#252;. Sadece YTL TL g&#246;z&#252;k&#252;yor ama kodda bir de&#287;i&#351;iklik olmad&#305;&#287;&#305;na g&#246;re bende bir problem var.
&#304;stedi&#287;im para birimini tan&#305;mlayabilece&#287;im, kodlar&#305;n listesi tarz&#305; bir bilgi var m&#305;d&#305;r?
Ben #.##0 "YTL";[Red]-#.##0 "YTL" &#351;eklinde denedim ama YTL hata veriyor.

Yeniden te&#351;ekk&#252;rler.
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Çok teşekkürler işimi gördü. Sadece YTL TL gözüküyor ama kodda bir değişiklik olmadığına göre bende bir problem var.
İstediğim para birimini tanımlayabileceğim, kodların listesi tarzı bir bilgi var mıdır?
Ben #.##0 "YTL";[Red]-#.##0 "YTL" şeklinde denedim ama YTL hata veriyor.

Yeniden teşekkürler.
Makro kaydet - Record new macro ile denemeler yaparak, istediğiniz paraların format kodlarını bulmanız mümkün.

.
 
Katılım
9 Mart 2007
Mesajlar
17
Excel Vers. ve Dili
2003 İngilizce
Hep kulland&#305;&#287;&#305;m taktik, ama bunun i&#231;in akl&#305;ma gelmemi&#351;ti. Te&#351;ekk&#252;rler.
 
Katılım
9 Mart 2007
Mesajlar
17
Excel Vers. ve Dili
2003 İngilizce
&#350;&#246;yle bir sorunla kar&#351;&#305;la&#351;t&#305;m. G2 ye veri, Vlookup ile ba&#351;ka bir tablodan geliyor. Bu sebepten dolay&#305; kod bunu alg&#305;lam&#305;yor ve &#231;al&#305;&#351;m&#305;yor. Bir fikir var m&#305;d&#305;r?
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Şöyle bir sorunla karşılaştım. G2 ye veri, Vlookup ile başka bir tablodan geliyor. Bu sebepten dolayı kod bunu algılamıyor ve çalışmıyor. Bir fikir var mıdır?
G2'ye girmek koşululya aşağıdaki kodlar çalışır.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [G2]) Is Nothing Then Exit Sub
Satır = "M2"
Select Case Target
Case Is = "": Range(Satır).NumberFormat = "#,##0.00 $"
Case Is = "X": Range(Satır).NumberFormat = "[$€-2] #,##0"
Case Is = "Y": Range(Satır).NumberFormat = "[$€-2] #,##0"
Case Is <> "X": Range(Satır).NumberFormat = "#,##0.00 $"
Case Is <> "Y": Range(Satır).NumberFormat = "#,##0.00 $"

End Select

End Sub


.
 
Katılım
9 Mart 2007
Mesajlar
17
Excel Vers. ve Dili
2003 İngilizce
Evet G2' ye veriyi kendim girdigim zaman calisiyor. Ama uygulama yaptigim tabloda G2 veriyi vlookup ile baska bir yerden cekiyor. O zaman calismiyor. Bunun cozumunu ariyorum. Bulamadim hala. Var m&#305;d&#305;r bir yolu?
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Evet G2' ye veriyi kendim girdigim zaman calisiyor. Ama uygulama yaptigim tabloda G2 veriyi vlookup ile baska bir yerden cekiyor. O zaman calismiyor. Bunun cozumunu ariyorum. Bulamadim hala. Var m&#305;d&#305;r bir yolu?
G2'deki form&#252;l&#252; de macro ile girersek olabilir.

Bir &#246;rnek dosya ekleyin. Bakal&#305;m.

.
 
Katılım
9 Mart 2007
Mesajlar
17
Excel Vers. ve Dili
2003 İngilizce
Dosyayı ekliyorum. Kodu eklemedim. Çünkü üzerinde kendi çalışan kodum da var, bu kodu ekleyince o da çalışmadı.


Bu entegre etmeye çalıştığımız kod.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [G14]) Is Nothing Then Exit Sub
Satır = "M14"
Select Case Target
Case Is = "": Range(Satır).NumberFormat = "#,##0 ""YTL"";[Red]-#,##0 ""YTL"""
Case Is = "X": Range(Satır).NumberFormat = "[$€-2] #,##0"
Case Is = "Y": Range(Satır).NumberFormat = "[$€-2] #,##0"
Case Is <> "X": Range(Satır).NumberFormat = "#,##0 ""YTL"";[Red]-#,##0 ""YTL"""
Case Is <> "Y": Range(Satır).NumberFormat = "#,##0 ""YTL"";[Red]-#,##0 ""YTL"""

End Select
End Sub
 
Son düzenleme:

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
Kodlar&#305; a&#351;a&#287;&#305;daki &#351;ekilde deneyin.


Private Sub Worksheet_Change(ByVal Target As Range)
Range("G2").Select
Range("D2").Select
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [G2]) Is Nothing Then Exit Sub
Sat&#305;r = "M2"
Select Case Target
Case Is = "": Range(Sat&#305;r).NumberFormat = "#,##0.00 $"
Case Is = "X": Range(Sat&#305;r).NumberFormat = "[$&#8364;-2] #,##0"
Case Is = "Y": Range(Sat&#305;r).NumberFormat = "[$&#8364;-2] #,##0"
Case Is <> "X": Range(Sat&#305;r).NumberFormat = "#,##0.00 $"
Case Is <> "Y": Range(Sat&#305;r).NumberFormat = "#,##0.00 $"

End Select

End Sub



.
 
Katılım
9 Mart 2007
Mesajlar
17
Excel Vers. ve Dili
2003 İngilizce
Bu şekilde olduğu zaman veri girişi çok zorlaşıyor. Devamlı cursor başa dönüyor. Elle hücrenin üstünden geçince de değişiyor, bu şekilde kullanmaya karar verdim. Ayırdığınız zaman ve desteğiniz için teşekkür ederim.
 
Üst