Aynı satırda çift yönlü formülasyon

Katılım
6 Aralık 2007
Mesajlar
40
Excel Vers. ve Dili
MS Excel 2010 Türkçe
Arkadaşlar,

Ekte örneği görüleceği gibi;

Birinci satırda maliyet ve satış fiyatı belli ürünün kar marjı hesaplanıyor, ikinci satırda maliyet ve kar marjı beli ürünün satış fiyatı hesaplanıyor. (mavi dolgulu hücreler formül içeriyor)

Aynı ürün için geçerli olabilcek bu hesaplamayı tek satırda çözmenin bir yolu var mı? Yani tek satırda satış fiyatı girilince kar marjı, kar marjı girilince satış fiyatı hesaplatılabilir mi?
 

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
Bu işlem ancak VBA ile yapılabilir aşağıdaki kodu sayfanın kod sayfasına kopyalayın.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [c:c]) Is Nothing Then GoTo 10
If Not Intersect(Target, [d:d]) Is Nothing Then GoTo 20
Exit Sub
10 Target.Next = (Target - Target.Offset(0, -1)) * 100 / Target.Offset(0, -1)
Exit Sub
20 Target.Offset(0, -1) = Target.Offset(0, -2) + (Target.Offset(0, -2) * Target / 100)
End Sub
 
Katılım
6 Aralık 2007
Mesajlar
40
Excel Vers. ve Dili
MS Excel 2010 Türkçe
kodu kopyaladım, çalışıyor. fakat sayfada herhangi bir hücreyi seçtiğimizde seçili hücrenin formül çubuğundaki görüntüsü titreşim yapar gibi görüntüleniyor, bu normal mi?

bir de C ve D sütünlarının içeriğini sildiğimizde "Run-time error '13': Type Mismatch" hatası veriyor...

yardımların için teşekkürler
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,253
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [C:D]) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target.Column = 3 And IsNumeric(Target) And Not IsEmpty(Target) Then
    If IsEmpty(Target.Previous) Then Exit Sub
    Application.EnableEvents = False
    Target.Next = (Target - Target.Offset(0, -1)) * 100 / Target.Offset(0, -1)
    Application.EnableEvents = True
    End If
    If Target.Column = 4 And IsNumeric(Target) And Not IsEmpty(Target) Then
    If IsEmpty(Target.Previous.Previous) Then Exit Sub
    Application.EnableEvents = False
    Target.Previous = Target.Offset(0, -2) + (Target.Offset(0, -2) * Target / 100)
    Application.EnableEvents = True
    End If
End Sub
 
Katılım
6 Aralık 2007
Mesajlar
40
Excel Vers. ve Dili
MS Excel 2010 Türkçe
teşekkür ederim, gayet başarılı :)

bu kod C ve D sütünları arasındaki ilişkiye dayanıyor. başka sütünlar arası aynı ilişkiyi kurmak için kod sayfasında "If Intersect(Target, [C : D]) Is Nothing Then Exit Sub" satırında C ve D yi değiştirmek yeterli olur mu?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,253
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Yorum yapabilmek için çalışmanızı görmek gerekir.
 
Katılım
6 Aralık 2007
Mesajlar
40
Excel Vers. ve Dili
MS Excel 2010 Türkçe
C ve D yi değiştirmek yeterli olmuyor. sanırım hesaplama için kullanılan hücre konumlarının tanımları gerekiyor.

işin mantığını anlamaya çalışıyorum, destek alabileceğim yazılı bir kaynak öneriniz varsa sevinirim.

selamlar...
 
Üst