Üç farklı değerde sonuç bulma

Katılım
24 Şubat 2009
Mesajlar
1,077
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
01-03-2023
Merhaba arkadaşlar; Bu formülün bana alternatifini yazar mısınız? =EĞER(B6="";"";EĞER(F6=3000;49,15;EĞER(SAYIYAÇEVİR(PARÇAAL(E6;1;BUL("/";E6;1)-1))<5;43,35;42,15)))

Teşekkür ederim. Örnek dosyası da ekte, bu formül bazen çalışıyor bazen çalışmıyor, kısacası şu F Sütunu 3000 e eşit esi; N sütununa 49,15; E sütunundaki derece yani önde olan rakam 1,2,3,4 olması halinde; N sütununa 43,15; 5 ve üzeri olması halinde N sütununa 42,15 yazacak, ben yukarda bir formül buldum bazen DEĞER diye bir şey yazıyor olmuyor, bana alternatif bir formül yazarsanız sevinirim. Teşekkürler.
 

Ekli dosyalar

EmrExcel16

Destek Ekibi
Destek Ekibi
Katılım
1 Kasım 2012
Mesajlar
1,524
Excel Vers. ve Dili
Office 365 Türkçe
Merhaba , şu şekilde dener misiniz.

Kod:
=EĞER(B6="";"";EĞER(F6=3000;49,15;EĞER(E6<5;43,35;42,15)))
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
E sütununun hüre biçimini Metin olarak ayarlayıp, derece kademe bilgisini tekrar girerseniz mevcut formülünüz çalışacaktır.

Şu anki haliyle çalışmamasının nedeni ise E sütunundaki verileri sayı olması. Örneğin sayı olan hücreye 1/4 yazdığınızda excel onu 0,25 olarak kabul ediyor, 5/2 yazdığınızda da 2,5 kabul ediyor.
 
Katılım
24 Şubat 2009
Mesajlar
1,077
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
01-03-2023
Tamam abim çalıştı teşekkür ederim. Sayın yusuf bey onu gördüm düşündüm ama sonuca ulaşmak gerekiyordu, bu formül işimi gördü. Her ikinizede teşekkür ederim.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Çalıştı dediğiniz formül sayın @EmrExcel16 'nın formülüyse muhtemelen hatalı sonuç veriyordur. Örneğin 5/2 olan birinin gündeliğini 42,15 bulması gerekirken 43,35 olarak bulacaktır.
 
Katılım
24 Şubat 2009
Mesajlar
1,077
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
01-03-2023
EVET doğru Yusuf Bey peki nasıl yapacağız? Metin yapınca da olmuyor, denedim.
 
Son düzenleme:

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Metin yapınca ve veriyi yeniden girince oluyor.
 
Katılım
6 Mart 2005
Mesajlar
6,233
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Aşağıdaki şekilde deneyiniz.
Kod:
=EĞER($B6="";"";EĞER($F6=3000;49,15;ARA(SOLDAN(METNEÇEVİR($E6;"#/##");BUL("/";METNEÇEVİR($E6;"#/##"))-1)*1;{1;5};{43,35;42,15})))
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Farklı bir çözüm de kademeler gündelik için önemli olmadığından sadece dereceyi hücreye yazmak ve ona göre formül kullanmak (muhtemelen sayın @EmrExcel16’in formülü çözecektir) ya da derece ve kademeyi ayrı sütunlara yazmak olabilir. Aynı hücrede hem derece hem kademe kullanılacaksa benim verdiğim çözüm (hücre biçimini metin yapmak) kullanılmalıdır.
 
Katılım
24 Şubat 2009
Mesajlar
1,077
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
01-03-2023
Merhaba sayın abilerim; Günaydın, çözümleriniz için teşekkür ederim, aslında Sayın Yusuf beyin ve Çıtır'ın vermiş olduğu formül ve öneriler çözüm veriyor, olmayan tek şey şu;
E sütunundaki Derece ve Kademe yani 4/2, 1/4, 6/3 bu değerler hücre değeri Metin yapılınca ve derece ve kademeler El ile girilince sorun çözülüyor, ancak benim dosyamın orjinalinde E sütunundaki veriyi kapalı olan personel listesinden şu kod ile alıyor. Alıncada metin olsa bile sayı gibi görüyor.
Bende burayı değiştirmek lazım.

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B6:B" & Rows.Count)) Is Nothing Then Exit Sub
On Error Resume Next
If Target.Value = "" Then Exit Sub
On Error GoTo 0
Range("C" & Target.Row & ":G" & Target.Row).ClearContents

Dim conn As Object, rs As Object
Set conn = CreateObject("Adodb.connection")
Set rs = CreateObject("adodb.recordset")
syf = "LİSTE": b = 0
For m = 1 To 2
If m = 2 Then syf = "TÜM"
conn.Open ("Provider=microsoft.ace.oledb.12.0;data source=" & "E:\Belgelerim\Personel\" & _
"\PERSONEL LİSTESİ.xlsm;extended properties=""excel 12.0;hdr=yes""")


rs.Open "select * from [" & syf & "$] where Sicili=" & Target.Value & ";", conn, 1, 3
If rs.RecordCount > 0 Then
Cells(Target.Row, "C").Value = rs("Adı").Value
Cells(Target.Row, "D").Value = rs("Soyadı").Value
Cells(Target.Row, "E").Value = rs("Maaş D").Value / rs("Maaş K").Value 'Burdaya alınken acaba metin modülü var mı onu mu yazsak
Cells(Target.Row, "F").Value = rs("EK GÖS").Value
Cells(Target.Row, "G").Value = rs("Rütbesi").Value
Else
b = b + 1
End If
If b = 1 Then
rs.Close
conn.Close
Else
Exit For
End If
Next

If b = 2 Then MsgBox "LİSTEDE BU SİCİLE AİT PERSONEL BULUNAMADI"
If b = 2 Then Target.Select
If b = 2 Then Target = ""
End Sub
 
Katılım
6 Mart 2005
Mesajlar
6,233
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Verdiğim formülde metin yapmadığınızda da çözüm olur.Dosyanızda deneme yaparak formül önerdim.
 
Katılım
24 Şubat 2009
Mesajlar
1,077
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
01-03-2023
Abiciğim doğru oluyor ama kapalı dosyadan E sütuna veri alınca Örneğin 1/4 olan yer gözükmüyor, bunu 0,25 yapıyor, birde 6/3 olunca normalde buna 42,15 verecek ya, kapalı dosyadan veriye alınca 6/3 oluyor, 2 iki oluncada yani 6 yı 3 e bölüyor, 2 oluncada 43,35 i veriyor, sorun sadece kapalı dosyadan veriyi alırken kesirli olması olacak sorun bu abim.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Cells(Target.Row, "E").Value = rs("Maaş D").Value / rs("Maaş K").Value

Bu kısmı

Cells(Target.Row, "E").Value = rs("Maaş D").Value

şekline dönüştürürseniz yani kademe kısmını almazsanız ( zaten sütun başlığında da dikkat ederseniz kadro derecesi diyor, derece kademesi demiyor), aşağıdaki formülle (Sayın @EmrExcel16'in formülünde ek göstergede küçük bir değişiklikle) sonuç alırsınız. O sütunun biçimi de sayı olursa iyi olur:

=EĞER(B6="";"";EĞER(F6>=3000;49,15;EĞER(E6<5;43,35;42,15)))
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Ya da biçimde bir değişiklik yapmadan aşağıdaki şekilde deneyin:

Cells(Target.Row, "E").Value = rs("Maaş D").Value & "/" & rs("Maaş K").Value

Kodun ilk halinde / işaretiyle bölme işlemi yapılıyor. Bu halinde iki sayı arasına / işareti konularak birleştirme yapılıyor.

Ben olsam bir önceki mesajımdaki düzenlemeyi kullanırım bu arada.
 
Katılım
24 Şubat 2009
Mesajlar
1,077
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
01-03-2023
Sayın abilerim çözümlerinin için teşekkür ederim, basit bir şey bizi yordu, Cells(Target.Row, "E").Value = rs("Maaş D").Value & "/" & rs("Maaş K").Value
bu formüllede dosyadan veriyi alırken sadeleştiriyor, yani 8/2, olan veri 4/1 oluyor, sonuç olarak şöyle karar verdim, bunları denedim oluyor, "/" bunu çift yazdım, "//" sorun olmuyor, yada ters yapınca da oldu, "\" ilgi ve alakanıza teşekkür ederim, zahmet verdim, ellerinize sağlık iyiki varsınız.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Öyleyse 13 nolu mesajımdaki çözüm daha uygun bence.
 
Üst