• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Iç içe eğer döngüsü problemi

Katılım
22 Mart 2017
Mesajlar
7
Excel Vers. ve Dili
EXCEL 2016, Türkçe
Merhaba,

İç içe iki farklı hücre için eğer döngüsü tanımlamam gerekiyor ancak formül hata vermemesine rağmen ilk döngüyü atlıyor ikinci, üçüncü, dördüncü sıradaki döngülere göre işlem yapıp sonucu veriyor.

Yapmak istediğim şey şu;

A1 50 den büyük 18 den küçükse C1 e 20 yaz,
B1 1825 den küçük veya eşitse 365 den büyükse C1 e 14 yaz,
B1 1826 dan büyük veya eşitse 5475 den küçük veya eşitse C1 e 20 yaz
B1 5476 dan büyük veya eşitse C1 e 26 yaz

Destek için şimdiden teşekkürler.
 
Son düzenleme:
Merhaba;

A1 50 den büyük 18 den küçükse C1 e 20 yaz,

Elbette atlayacak. Böyle bir rakam yok!
Bir rakam;
Hem 50 den büyük hemde 18 den küçük olabilir mi?
Böyle bir rakam var mı?

Sub yorumla()
'A1 50 den büyük 18 den küçükse C1 e 20 yaz,
'B1 1825 den küçük veya eşitse 365 den büyükse C1 e 14 yaz,
'B1 1826 dan büyük veya eşitse 5475 den küçük veya eşitse C1 e 20 yaz
'B1 5476 dan büyük veya eşitse C1 e 26 yaz

If Cells(1, 1) > 50 And Cells(1, 1) < 18 Then Cells(1, 3) = 20
If Cells(1, 2) >= 365 And Cells(1, 2) < 1825 Then Cells(1, 3) = 14
If Cells(1, 2) >= 1826 And Cells(1, 1) <= 5475 Then Cells(1, 3) = 20
If Cells(1, 2) >= 5476 Then Cells(1, 3) = 26
End Sub
 
Son düzenleme:
AND/VE bağlacı yerine VEYA/OR bağlacını deneyin.

A1 50 den büyük VEYA 18 den küçükse C1 e 20 yaz,
Kod:
If Cells(1, 1) > 50 [B][COLOR="Red"]OR[/COLOR][/B] Cells(1, 1) < 18 Then Cells(1, 3) = 20
 
Merhaba;

A1 50 den büyük 18 den küçükse C1 e 20 yaz,

Elbette atlayacak. Böyle bir rakam yok!
Bir rakam;
Hem 50 den büyük hemde 18 den küçük olabilir mi?
Böyle bir rakam var mı?

Sub yorumla()
'A1 50 den büyük 18 den küçükse C1 e 20 yaz,
'B1 1825 den küçük veya eşitse 365 den büyükse C1 e 14 yaz,
'B1 1826 dan büyük veya eşitse 5475 den küçük veya eşitse C1 e 20 yaz
'B1 5476 dan büyük veya eşitse C1 e 26 yaz

If Cells(1, 1) > 50 And Cells(1, 1) < 18 Then Cells(1, 3) = 20
If Cells(1, 2) >= 365 And Cells(1, 2) < 1825 Then Cells(1, 3) = 14
If Cells(1, 2) >= 1826 And Cells(1, 1) <= 5475 Then Cells(1, 3) = 20
If Cells(1, 2) >= 5476 Then Cells(1, 3) = 26
End Sub

Cevap için teşekkürler. Söylediğinizi yaptım ancak bu makro sadece istediğim hücreye "14" yazmakta. Diğer parametreler içinde ilgili değişiklikleri yaptım ancak hücreye sadece "14" yazdırıyor.
 
Daha kapsamlı yazma gereği duydum,

Şimdi yapmaya çalıştığım şey yıllık izin hakediş ve takip programı.

Değişkenlerimiz Yaş ve Gün bazında kıdem.

Yaş 18 den küçükse ya da 50 den büyükse yıllık izin 20 gün hak ediliyor her yıl için.

Ancak işçinin yaşı 18 den küçük değilse ve 50 den büyük değilse gün bazında kıdem değişkeni hesaba katılıyor ve hak ediş şu şekilde oluyor;

1-5 Yıl arası (365gün-1825gün) 14 gün
5-15 Yıl arası(1826gün-5475gün) 20gün
+15 yıl (5476+gün) 26 gün yıllık izin hak edişi oluyor.

Kurmaya çalıştığım döngü bu. Önce yaşa bakılacak, uygun değilse hak ediş gün bazında kıdeme göre yapılacak.
 
Son düzenleme:
Acaba bu konuda yardımcı olabilecek kimse yok mu?
Merhaba
Şöyle denermisiniz?
Kod:
[SIZE="2"]Sub hesap()
Select Case [a1]
Case 18 To 50
Select Case [b1]
Case 366 To 1825
x = 14
Case 1826 To 5475
x = 20
Case Is > 5475
x = 26
End Select
Case Else
x = 20
End Select
[C1] = x
End Sub [/SIZE]
 
Merhaba;
Şimdi soru doğrulandı.

Sub yorumla()
Cells(1, 3) = ""
If Cells(1, 2) >= 365 And Cells(1, 2) < 1825 Then Cells(1, 3) = 14
If Cells(1, 2) >= 1826 And Cells(1, 1) <= 5475 Then Cells(1, 3) = 20
If Cells(1, 2) >= 5476 Then Cells(1, 3) = 26
If Cells(1, 1) >= 50 Or Cells(1, 1) <= 18 Then Cells(1, 3) = 20
End Sub

İyi çalışmalar.
 
Merhaba;
Şimdi soru doğrulandı.

Sub yorumla()
Cells(1, 3) = ""
If Cells(1, 2) >= 365 And Cells(1, 2) < 1825 Then Cells(1, 3) = 14
If Cells(1, 2) >= 1826 And Cells(1, 1) <= 5475 Then Cells(1, 3) = 20
If Cells(1, 2) >= 5476 Then Cells(1, 3) = 26
If Cells(1, 1) >= 50 Or Cells(1, 1) <= 18 Then Cells(1, 3) = 20
End Sub

İyi çalışmalar.


Çok teşekkür ederim. Çalıştı.
Ancak bir eksiğim var;

O da bu işlemlerin en başında EĞER GÜN BAZINDA KIDEM <= 364 'e bütün döngüyü durdur, sıfır yaz.

Bunun için Cells(1, 3) = "" satırından sonra şu kodu ekledim;

If Cells(1, 2) <= 364 Then Cells(1, 3) = 0

ancak gün bazında kıdemi örneğin 5 gün hesaplattığımda yine de sıfır yazmıyor.
 
Merhaba;
aşağıdaki satırı End Sub satırının üstüne ekleyerek deneyin.

If Cells(1, 2) <> "" And Cells(1, 2) <= 364 Then Cells(1, 3) = 0

İyi çalışmalar.
 
Merhaba;
aşağıdaki satırı End Sub satırının üstüne ekleyerek deneyin.

If Cells(1, 2) <> "" And Cells(1, 2) <= 364 Then Cells(1, 3) = 0

İyi çalışmalar.


Teşekkürler. Çalıştı.
Hepiniz var olun.
 
Geri
Üst