• DİKKAT

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

IF formül kısaltma

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,202
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar,

Beton döküm işinde işçilik maliyetlerini

0-20 m3 arası : 5 TL/m3
20-40 m3 arası : ilk 20 m3 için 5 TL/m3, kalanı 4 TL/m3
40-60 m3 arası : ilk 20 m3 için 5 TL/m3, 2. 20 m3 için 4 TL/m3, kalanı 3 TL/m3
60-80 m3 arası : ilk 20 m3 için 5 TL/m3, 2. 20 m3 için 4 TL/m3, 3. 20 m3 için 3 TL/m3, kalanı 2 TL/m3
80-100 m3 arası : ilk 20 m3 için 5 TL/m3, .................................................... , kalanı 1 TL/m3
100 m3 üstü : ilk 20 m3 için 5 TL/m3, .................................................... , kalanı 0,5 TL/m3

şeklinde (20 m3 lik dilimler halinde) aşağıdaki formulle hesaplamaktayım,

Kod:
=IF(B2<20;5*B2;IF(B2<40;(20*5)+(B2-20)*4;IF(B2<60;(20*5)+(20*4)+(B2-40)*3;IF(B2<80;(20*5)+(20*4)+(20*3)+(B2-60)*2;IF(B2<100;(20*5)+(20*4)+(20*3)+(20*2)+(B2-80)*1;(20*5)+(20*4)+(20*3)+(20*2)+(20*1)+(B2-100)*0,5)))))

bu formülü nasıl kısaltabilirim,

2. olarak kod yazarak kullanıcı tanımlı fonksiyona da dönüştürebiliriz.

iyi çalışmalar.
 

Ekli dosyalar

Kod:
=TOPLA.ÇARPIM(ARA((A12+SATIR(DOLAYLI("1:"&B12-A12+1))-1);A2:A7;D2:D7))
Bu şekilde deneyiniz.
 
Kod:
=TOPLA.ÇARPIM(ARA((A12+SATIR(DOLAYLI("1:"&B12-A12+1))-1);A2:A7;D2:D7))
Bu şekilde deneyiniz.

Sn Ömer maalesef sonuç alamadım; dosya üzerinde yazabilirmisiniz,

teşekkürler,
iyi çalışmalar.
 
Kod:
=SUMPRODUCT(LOOKUP((A12+ROW(INDIRECT("1:"&B12-A12+1))-1);A1:A6;D1:D6))

şeklinde yazın.

.

Sn Yurttaş öncelikle ben bu formülün
Kod:
[color=red][B]INDIRECT("1:"&B12-A12+1)[/B][/color]

kısmını anlamadım, nereye refere ediyor?

B12-A12+1=88-0+1=89 sonucunu veriyor.

iyi çalışmalar.
 
Yanlış mı hesaplıyor ?

Diğer bir konu formülün hesaplama mantığı B12-A12+1=88-0+1=89 bu şekilde değildir. Dizi içine girerek tüm verileri ayrı ayrı hesaplar.

.
 
Sn Ömer;

bu formülü' nün açılımını öğrenmeye çalışıyorum

INDIRECT("1:"&B12-A12+1)

ROW(INDIRECT("1:"&B12-A12+1))

LOOKUP((A12+ROW(INDIRECT("1:"&B12-A12+1))-1)

şeklinde giderek adım adım çözmeye çalışıyorum,

formülün çalışma mantığını kısaca anlatabilirmisiniz,

teşekkürler, iyi çalışmalar.
 
İmleç formüllü hücredeyken Görünüm / Araçlar Çubukları / Formül denetleme seçeneğini işaretleyin ve açılan menüdeki fx işaretine tıklarsanız formülün hesaplama mantığını adım adım görebilirsiniz. Bu işlemi yaparken aralığı kısa tutarsanız daha kolay görebilirsiniz..

.
 
Sn Yurttaş öncelikle ben bu formülün
Kod:
[color=red][B]INDIRECT("1:"&B12-A12+1)[/B][/color]

kısmını anlamadım, nereye refere ediyor?

B12-A12+1=88-0+1=89 sonucunu veriyor.

iyi çalışmalar.

.

Aslında formül:

Kod:
=SUM(LOOKUP((A12+ROW(INDIRECT("1:"&B12-A12+1))-1);A1:A6;D1:D6))

şeklinde bir dizi formülüdür.

Formülün temeli LOOKUP fonksiyonudur.

LOOKup ile A12 değerini, B12-A12 farkının (net) bir fazlasına ait bir dizideki elemanlarına ekletip, ortaya çıkan bu değerlerden 1 eksiltip, A1:A6'da, D1: D6 alanında bulmaktır.

Bunlar bulunduktan sonra, istersek SUM ile dizi formülü oluştururuz. İstersek SUM yerine SUMPRODUCT fonksiyonu kullanarak sonuca ulaşırız.

Kod:
=SUMPRODUCT(LOOKUP((A12+ROW(INDIRECT("1:"&B12-A12+1))-1);A1:A6;D1:D6))

.
 
.


Formülün temeli lookup fonksiyonudur.

Lookup ile a12 değerini, b12-a12 farkının (net) bir fazlasına ait bir dizideki elemanlarına ekletip, ortaya çıkan bu değerlerden 1 eksiltip, a1:a6'da, d1: D6 alanında bulmaktır.


.

Sn Yurrtaş Formül' ün geldiği son durum;
Kod:
=sumproduct(lookup(([color=red]{0;1;2;3;4;5;6;.....;81;82}[/color]);a1:a6;d1:d6))

lookup içindeki {0,1;2;3;4;5;6;.....;81;82} (0-82) arasındaki değerleri bu kadar uzatmadan kısaca yazmanın yolu yok mudur?

Örn:
Kod:
lookup({0-82})
gibi... 0 ile 82 arasındaki tüm degerler.


iyi Çalışmalar.
 
Sn Yurrtaş Formül' ün geldiği son durum;
Kod:
=sumproduct(lookup(([color=red]{0;1;2;3;4;5;6;.....;81;82}[/color]);a1:a6;d1:d6))

lookup içindeki {0,1;2;3;4;5;6;.....;81;82} (0-82) arasındaki değerleri bu kadar uzatmadan kısaca yazmanın yolu yok mudur?

Örn:
Kod:
lookup({0-82})
gibi... 0 ile 82 arasındaki tüm degerler.


iyi Çalışmalar.

.

Öyle bir yazım düzeni yok.

Burayı inceleyin.


Lookup-vlookup-hlookup



.
 
Geri
Üst