3 Koşullu Eğer Formülü

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Benim şöyle bir sorum olacak.

Eğer a1=10 değerini aldığında b1=2 ve c1=3 değerini alıyorsa a1*b1 ;eğer a1=10 değerini aldığında b1=3 ve c1=2 değerini alıyorsa a1*c1 işlemini yapacak bir formül yazılabilir mi
Deneyiniz:
=EĞER(A1=10;EĞER(VE(B1=2;C1=3);A1*B1;EĞER(VE(B1=3;C1=2);A1*C1;""));"")
 
Katılım
7 Mayıs 2019
Mesajlar
28
Excel Vers. ve Dili
2010 Excel 14.0
Deneyiniz:
=EĞER(A1=10;EĞER(VE(B1=2;C1=3);A1*B1;EĞER(VE(B1=3;C1=2);A1*C1;""));"")
Teşekkürler bunu yaptım. Şimdi daha uzun bir formül var :)

Eğer d3<=1 değerini aldığında d4=4,b5=1,d5=9 değerlerini alıyorsa b3 ü yaz
Eğer d3<=2 değerini aldığında d4=4,b5=1,d5=9 değerlerini alıyorsa b3 ü yaz
Eğer d3<=3 değerini aldığında d4=4,b5=1,d5=9 değerlerini alıyorsa b3 ü yaz
Eğer d3<=4 değerini aldığında d4=4,b5=1,d5=9 değerlerini alıyorsa b3 ü yaz
Eğer d3<=5 değerini aldığında d4=4,b5=1,d5=9 değerlerini alıyorsa b3 ü yaz
Eğer d3<=1 değerini aldığında d4=9,b5=1,d5=9 değerlerini alıyorsa b3-2ü yaz
Eğer d3<=2 değerini aldığında d4=9,b5=1,d5=9 değerlerini alıyorsa b3-2ü yaz
Eğer d3<=3 değerini aldığında d4=9,b5=1,d5=9 değerlerini alıyorsa b3-2ü yaz
Eğer d3<=4 değerini aldığında d4=9,b5=1,d5=9 değerlerini alıyorsa b3-2ü yaz
Eğer d3<=5 değerini aldığında d4=9,b5=1,d5=9 değerlerini alıyorsa b3-2ü yaz

seklinde bir fonksiyon olusturulabilir mi
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Şöyle deneyin:

=EĞER(VE(D5=9;B5=1;YADA(D4=4;D4=9);YADA(D3=1;D3=2;D3=3;D3=4;D3=5));B3;"")

D3 için belirttiğiniz şartta küçük eşit demişsiniz, bunu eşittir diye kabul ediyorum. Eğer küçük eşit olacaksa neden 5 ayrı şart belirlediğinizi anlamadım. Sadece 5'ten küçük eşit yeterdi. Ayrıca bu durumda örneğin -500 de şartı sağlar, 3 buçuk da sağlar.
 
Son düzenleme:

bedirster

Altın Üye
Katılım
18 Ocak 2020
Mesajlar
62
Excel Vers. ve Dili
Office 2019 TR
64 Bit
Altın Üyelik Bitiş Tarihi
16-03-2026
Merhaba,
bir konuda yardıma ihtiyacım var, bir hücreye
flanş
masa
güvenlik
olarak 3 lü ad tanımlama yaptım. ben flanşı seçtiğimde veri olarak ilk hücreye flanş ayak
ikinci hücreye flanş çapraz 4. hücreye flanş mil yazmasını istiyorum. ayrıca masa yada güvenlik kısmını seçtiğimde o birimlerin alt kategorilerinin ürün kısmına , birim fiyatlarınında birim fiyat kısmına yazılmasını istiyorum.



yardımcı olabilecek arkadaş varsa çok mutluluk duyarım.

saygılar.
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Merhaba.

bir hücreye
flanş
masa
güvenlik
olarak 3 lü ad tanımlama yaptım.
Hangi hücreye yaptınız? Dosyanızda böyle bir hücre göremedim. Sayfa ve hücre adresi belirtir misiniz?


ben flanşı seçtiğimde veri olarak ilk hücreye flanş ayak
ikinci hücreye flanş çapraz 4. hücreye flanş mil yazmasını istiyorum.
"Birinci, İkinci, Üçüncü" dediğiniz hücreler hangi hücreler? Hangi sayfadalar?

Örneğinizi anlatımınıza uygun hazırlayıp paylaşır ya da sorunuzu örnek dosyanıza uygun olarak sorarsanız iyi olur.
 

bedirster

Altın Üye
Katılım
18 Ocak 2020
Mesajlar
62
Excel Vers. ve Dili
Office 2019 TR
64 Bit
Altın Üyelik Bitiş Tarihi
16-03-2026
Merhaba.



Hangi hücreye yaptınız? Dosyanızda böyle bir hücre göremedim. Sayfa ve hücre adresi belirtir misiniz?




"Birinci, İkinci, Üçüncü" dediğiniz hücreler hangi hücreler? Hangi sayfadalar?

Örneğinizi anlatımınıza uygun hazırlayıp paylaşır ya da sorunuzu örnek dosyanıza uygun olarak sorarsanız iyi olur.
Merhaba.



Hangi hücreye yaptınız? Dosyanızda böyle bir hücre göremedim. Sayfa ve hücre adresi belirtir misiniz?




"Birinci, İkinci, Üçüncü" dediğiniz hücreler hangi hücreler? Hangi sayfadalar?

Örneğinizi anlatımınıza uygun hazırlayıp paylaşır ya da sorunuzu örnek dosyanıza uygun olarak sorarsanız iyi olur.
Merhaba,

ilgiliniz için teşekkür ederim.

Dosya üzerinde anlatımı tekrardan yaptım. inşallah başarılı olmuşumdur.

yardımınız için şimdiden teşekkür ederim.

saygılar.
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Ekli dosyayı inceleyin. Dosyada hem makro hem de ad tanımlaması kullanarak veri doğrulamalı olarak tablonuzu güncelledim. Bu arada bazı biçim değişiklikleri de yaptım. Fazla sütunları sildim vs.

Dosyada ana menü sayfasındaki sarı hücreleri değiştirebilirsiniz.

veri sayfasında B, D ve F sütunlarındaki verileri aşağı doğru istediğiniz kadar çoğaltabilirsiniz.
 

Ekli dosyalar

bedirster

Altın Üye
Katılım
18 Ocak 2020
Mesajlar
62
Excel Vers. ve Dili
Office 2019 TR
64 Bit
Altın Üyelik Bitiş Tarihi
16-03-2026
Yusuf Bey Merhaba,

Yardımınız için çok teşekkürler, harika olmuş emeğinize sağlık. Tek bir problem var dosya ilk açıldığında flaşlı iskelede iki kalemin fiyatı geliyor, sonraki kalemlerin gelmiyor. Yada farklı iskele çeşidine geçince fiyatlar gelmiyor. Birde ben bu tabloyu başka bir çalışma kitabı içine aktaracağım, o çalışma kitabı üzerinden aynı dosyayı gönderiyorum. sizin çalışma kitabınızı bu dosyaya kopyaladığımda nasıl işlem yapmalıyım.

Farklı olarak alt kategorileri veri doğrulama olmadan otomatik doldurma yapabilir miyiz?

Teşekkürler

Saygılar.
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
İlk dosyanızla bu dosya arasında ne fark var anlamadım. Başka dosyada kullanacaksanız neden o dosyayı paylaşmıyorsunuz ki?

"Formüller çalışmıyor" demişsiniz ama çalışıyorlar. Ancak çalışması için öncelikle önceki hücrelerin dolu olması gerekiyor. Formülü incelerseniz YADA formülünün içinde boş olma kontrolü yapıldığını görebilirsiniz. G7 hücresindeki formülün çalışması için D4, C7 ve E7 hücrelerinin dolu olması gerekmektedir. Paylaştığınız dosyada formülün çalışmadığını belirttiğiniz G7 hücresi, Miktar yani E7 hücresi boş olduğu için çalışmıyor. Miktar sütununu doldurursanız çalışacaktır. Eğer miktar girmeden birim fiyatı görmek istiyorsanız YADA formülünün içindeki ;E5="" kısmını silmelisiniz.

İlla "asıl dosya"yı kullanmak istiyorsanız ilk dosyada yapılmış tüm ayarlamaları (formüller, ad tanımları ve makrolar) "asıl dosya" için de yapmak gerekir.

İskele türü seçildiğinde alt birimlerin gelmesi için makroda değişiklik yapılması gerekir. Ben alt malzemelerin seçimlik olacağını düşünerek yapmıştım. Her iskele türü için her alt ürün mutlaka tabloya işlenecekse ilk paylaştığım dosyadaki makro şöyle olmalı (makro ana menü sayfa adına sağ tıklayıp kod görüntüle deyince açılan sayfadadır):

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D4]) Is Nothing Then GoTo 10
    Application.ScreenUpdating = False
    [C5:E20,H5:H20].ClearContents
    With [C5:C20].Validation
        .Delete
        If Target = "" Then GoTo son
        If Target = "FLANŞLI İSKELE" Then
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=flanş"
        ElseIf Target = "GÜVENLİK İSKELE" Then
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=güvenlik"
        ElseIf Target = "MASA İSKELE" Then
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=masa"
        Else
            GoTo son
        End If
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    sut = WorksheetFunction.Match(Target, Sheets("veri").[B1:G1], 0) + 1
    son = Sheets("veri").Cells(Rows.Count, sut).End(3).Row
    a = 5
    For i = 2 To son
        Cells(a, "C") = Sheets("veri").Cells(i, sut)
        Cells(a, "G") = Sheets("veri").Cells(i, sut + 1)
        a = a + 1
    Next
    [C5].Select
son:
    Application.ScreenUpdating = True
10:
If Intersect(Target, [C5:C20]) Is Nothing Then GoTo 20
    Target.Offset(0, 1).Select
20:
If Intersect(Target, [E5:E20]) Is Nothing Then Exit Sub
    Target.Offset(0, 3).Select
End Sub
 

bedirster

Altın Üye
Katılım
18 Ocak 2020
Mesajlar
62
Excel Vers. ve Dili
Office 2019 TR
64 Bit
Altın Üyelik Bitiş Tarihi
16-03-2026
Yusuf Bey Merhaba,

Teşekkür ederim. çok sağlıklı bir çalışma oldu.

kolay gelsin
 

bedirster

Altın Üye
Katılım
18 Ocak 2020
Mesajlar
62
Excel Vers. ve Dili
Office 2019 TR
64 Bit
Altın Üyelik Bitiş Tarihi
16-03-2026
İlk dosyanızla bu dosya arasında ne fark var anlamadım. Başka dosyada kullanacaksanız neden o dosyayı paylaşmıyorsunuz ki?

"Formüller çalışmıyor" demişsiniz ama çalışıyorlar. Ancak çalışması için öncelikle önceki hücrelerin dolu olması gerekiyor. Formülü incelerseniz YADA formülünün içinde boş olma kontrolü yapıldığını görebilirsiniz. G7 hücresindeki formülün çalışması için D4, C7 ve E7 hücrelerinin dolu olması gerekmektedir. Paylaştığınız dosyada formülün çalışmadığını belirttiğiniz G7 hücresi, Miktar yani E7 hücresi boş olduğu için çalışmıyor. Miktar sütununu doldurursanız çalışacaktır. Eğer miktar girmeden birim fiyatı görmek istiyorsanız YADA formülünün içindeki ;E5="" kısmını silmelisiniz.

İlla "asıl dosya"yı kullanmak istiyorsanız ilk dosyada yapılmış tüm ayarlamaları (formüller, ad tanımları ve makrolar) "asıl dosya" için de yapmak gerekir.

İskele türü seçildiğinde alt birimlerin gelmesi için makroda değişiklik yapılması gerekir. Ben alt malzemelerin seçimlik olacağını düşünerek yapmıştım. Her iskele türü için her alt ürün mutlaka tabloya işlenecekse ilk paylaştığım dosyadaki makro şöyle olmalı (makro ana menü sayfa adına sağ tıklayıp kod görüntüle deyince açılan sayfadadır):

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D4]) Is Nothing Then GoTo 10
    Application.ScreenUpdating = False
    [C5:E20,H5:H20].ClearContents
    With [C5:C20].Validation
        .Delete
        If Target = "" Then GoTo son
        If Target = "FLANŞLI İSKELE" Then
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=flanş"
        ElseIf Target = "GÜVENLİK İSKELE" Then
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=güvenlik"
        ElseIf Target = "MASA İSKELE" Then
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=masa"
        Else
            GoTo son
        End If
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    sut = WorksheetFunction.Match(Target, Sheets("veri").[B1:G1], 0) + 1
    son = Sheets("veri").Cells(Rows.Count, sut).End(3).Row
    a = 5
    For i = 2 To son
        Cells(a, "C") = Sheets("veri").Cells(i, sut)
        Cells(a, "G") = Sheets("veri").Cells(i, sut + 1)
        a = a + 1
    Next
    [C5].Select
son:
    Application.ScreenUpdating = True
10:
If Intersect(Target, [C5:C20]) Is Nothing Then GoTo 20
    Target.Offset(0, 1).Select
20:
If Intersect(Target, [E5:E20]) Is Nothing Then Exit Sub
    Target.Offset(0, 3).Select
End Sub
Yusuf Bey Merhaba,

Son makroyu ekteki dosyaya ekliyorum lakin hata alıyorum. Ne yaptıysam çözülmedi. son bir kez bakabilir misiniz?

Teşekkürler
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Günaydın.

Bu dosyanızla ilk paylaştığınız dosya birbirinden çok farklı. Eğer en başta bu dosyayı paylaşsaydınız ona göre çözüm bulmaya çalışırdım.

Bu dosyada aşağıdaki kodları deneyin:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [E30]) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    [D31:G45,J31:J45].ClearContents
    sut = WorksheetFunction.Match(Target, Sheets("veri").[B1:G1], 0) + 1
    son = Sheets("veri").Cells(Rows.Count, sut).End(3).Row
    a = 31
    For i = 2 To son
        Cells(a, "D") = Sheets("veri").Cells(i, sut)
        Cells(a, "I") = Sheets("veri").Cells(i, sut + 1)
        a = a + 1
    Next
    [D31].Select
son:
    Application.ScreenUpdating = True
End Sub
Aklınızda bulunsun örnek dosyanız her zaman asıl dosyanızla aynı yapıda olsun.
İkinci olarak eğer verilen bir çözümü uygulayamadığınızı belirtiyorsanız dosyanızda o uyguladığınız çözüm olsun ki nereyi eksik ya da yanlış yaptığınızı kontrol edebilelim.
 

bedirster

Altın Üye
Katılım
18 Ocak 2020
Mesajlar
62
Excel Vers. ve Dili
Office 2019 TR
64 Bit
Altın Üyelik Bitiş Tarihi
16-03-2026
Günaydın.

Bu dosyanızla ilk paylaştığınız dosya birbirinden çok farklı. Eğer en başta bu dosyayı paylaşsaydınız ona göre çözüm bulmaya çalışırdım.

Bu dosyada aşağıdaki kodları deneyin:

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [E30]) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    [D31:G45,J31:J45].ClearContents
    sut = WorksheetFunction.Match(Target, Sheets("veri").[B1:G1], 0) + 1
    son = Sheets("veri").Cells(Rows.Count, sut).End(3).Row
    a = 31
    For i = 2 To son
        Cells(a, "D") = Sheets("veri").Cells(i, sut)
        Cells(a, "I") = Sheets("veri").Cells(i, sut + 1)
        a = a + 1
    Next
    [D31].Select
son:
    Application.ScreenUpdating = True
End Sub
Aklınızda bulunsun örnek dosyanız her zaman asıl dosyanızla aynı yapıda olsun.
İkinci olarak eğer verilen bir çözümü uygulayamadığınızı belirtiyorsanız dosyanızda o uyguladığınız çözüm olsun ki nereyi eksik ya da yanlış yaptığınızı kontrol edebilelim.
Yusuf Bey Merhaba,

Çok teşekkür ederim. kodları uyguladıktan sonra çalıştı. benim içinde iyi bir tecrübe oldu. bundan sonra örnek yerine dosyanın kendisi ile çözüm aramam gerektiğini iyice anlamış oldum.

emeğinize sağlık.
 
Üst