IF formül kısaltma

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
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.
 

tamer42

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

Ekli dosyalar

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Kod:
=TOPLA.ÇARPIM(ARA((A12+SATIR(DOLAYLI("1:"&B12-A12+1))-1);A2:A7;D2:D7))
Bu şekilde deneyiniz.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
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.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
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.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
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.

.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,062
Excel Vers. ve Dili
Office 2013 İngilizce
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.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
İ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..

.
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
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))
.
 

tamer42

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


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.
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
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



.
 
Üst