Maksimum, Eğer ve Dolaylı fonksiyonlarının birlikte 3D olarak kullanımı nasıl olur..?

Katılım
22 Şubat 2012
Mesajlar
29
Excel Vers. ve Dili
Türkçe
Altın Üyelik Bitiş Tarihi
01.06.2019
Herkese merhaba;

Bir süredir küçük bir işletme sahibi olan arkadaşıma manevi destek amacıyla; stok, satış, fatura gibi işlemlerini takip edebileceği bir excel dosyası hazırlamaya çalışıyorum. (Hazır olanları istemeyip, ısrarla benden yardım istediğine hala inanamıyorum) Excelde pek iyi değilim. İnternet'ten formüllere bakarak bir şeyler yapmaya çalışıyorum.

Bir konuda tıkandım ve bir türlü çözüm bulamıyorum. İnternet'te oldukça uzun süredir araştırıyorum ancak hiç bir şey yok maalesef. 25-30 gündür takılıp kaldım. Aklıma size sormak geldi. Sorum detaylı biçimde ekteki dosyada mevcut. Vaktiniz olursa ve bakarsanız çok sevinirim.

Şimdiden teşekkür eder iyi günler dilerim.
 

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
Merhaba,

Dizi formülüdür.

Kod:
=MAK(EĞER(M(KAYDIR(DOLAYLI("'"&DEVRİK_DÖNÜŞÜM(Sayfalar)&"'!J2:J100")
 ;SATIR(DOLAYLI("2:100"))-2;0;1))=B3
  ;S(KAYDIR(DOLAYLI("'"&DEVRİK_DÖNÜŞÜM(Sayfalar)&"'!L2:L100")
   ;SATIR(DOLAYLI("2:100"))-2;0;1))))
.
 
Katılım
22 Şubat 2012
Mesajlar
29
Excel Vers. ve Dili
Türkçe
Altın Üyelik Bitiş Tarihi
01.06.2019
Ömer Hocam ilginiz ve emeğiniz için çok teşekkür ederim. Fonksiyonun çalışma mantığını henüz tam olarak kavrayamadım (üzerinde çalışıp anlamaya çalışacağım) ama soru(nu)mun tam olarak cevabıdır. Ancak J sütununda ve L sütununda 2 ile 100 arasında hücre değeri sınırı koymadan yapmak mümkün müdür?

Değilse üst sınırı en fazla kaç yapabilirim? (1000000 çalışmadı 10000 denedim çalıştı)

Bir de "Sayfalar Listesi"nde bulunan "Güncelle" butonuna tıklamaya gerek kalmadan, yeni bir sayfa eklendiğinde ve/veya bir sayfa silindiğinde Sayfalar Listesinin otomatik olarak güncellenebilmesi için bir VBA kodu var mıdır?
 

Ö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
Sayfa adlarını döktürdüğünüz kodlara gerek kalmadan farklı bir yol ile çözüm sunayım. "Sayfalar Listesi" adlı sayfayı da silebilirsiniz.
-------------------------------------------------------------------------------

Ad tanımda Sayfalar adı için kullandığınız kaydır formülünün yerine aşağıdaki formülü kullanarak sayfa adlarını herhangi bir yardımcı kullanmadan diziye alabilirsiniz. Bu formül sadece ad tanımlamada kullanılırsa çalışır. Bu yüzden ana formülün içine bu haliyle monte etmeye çalışmayın.
Artık sayfa adlarını aldığının kodun ve döktürdüğünüz sayfanın bir gereği kalmayacaktır.


Kod:
=AL.ÇALIŞMAKİTABI(1)
Yazın.

Diğer mesajdaki formülün yerine de aşağıdaki formülü yazın.

Dizi formülüdür.

Kod:
=MAK(EĞER(M(KAYDIR(DOLAYLI("'"&Sayfalar&"'!J2:J100");SATIR(DOLAYLI("2:100"))-2
 ;0;1))=B3;S(KAYDIR(DOLAYLI("'"&Sayfalar&"'!L2:L100")
  ;SATIR(DOLAYLI("2:100"))-2;0;1))))
Not1: 100 değerini Excelin sınırları dahilinde istediğiniz kadar artırabilirsiniz. Ben formül kasmasın diye kısa tutmuştum.
Not2: Dosyanızı yine "Makro içerebilen dosya" kayıt türü olarak kaydediniz.

.
 
Katılım
22 Şubat 2012
Mesajlar
29
Excel Vers. ve Dili
Türkçe
Altın Üyelik Bitiş Tarihi
01.06.2019
Sayın Ömer Hocam dediğiniz gibi yaptım ve formülünüz tam olarak çalıştı. Hem teşekkür hem tebrik ederim. İngilizce yayın yapan yabancı forum siteleri de dahil olmak üzere oldukça geniş bir arama yapmış ama soru(nu)ma cevap bulamamıştım.

Ancak şimdi başka bir sorunla karşılaştım. Sorunla ilgili detaylı açıklamayı ekteki dosyada yaptım. Değerli vaktinizi ayırıp yardımcı olursanız memnun olurum.

Tabi forumda ki diğer değerli arkadaşlarımında her türlü katkısına açığım.

Bu konuyu okuyan herkese bu dosyayı kaydetmesini öneririm. (Sizlerinde katkısı ile oluşacak son halini paylaştıktan sonra konuyu kapatacağım) Her yerde bulamayacağınız ve işinize oldukça yarayacak fonksiyonlar içerdiğini düşünüyorum.
 
Katılım
22 Şubat 2012
Mesajlar
29
Excel Vers. ve Dili
Türkçe
Altın Üyelik Bitiş Tarihi
01.06.2019
Ne yaptım, ne ettim ise de dosyayı siteye bir türlü yükleyemedim. Dosya yükleme sitelerini denedim ancak onlara da yükleyemedim.

Yazarak anlatmaya çalışsam belki meramımı arz edebilirim diye umuyorum.

1- "A Firması" sayfasının ilgili sütununa alınan ürün isimlerini yazarken kolaylık olması, yazım hatasının önlenmesi ve yazım birliği olması için, ilgili sütunundaki (gerekli) aktif hücre satırının hemen solundaki sütununa yeşil renkli bir "Komut Düğmesi" ekleyip "Stok" sayfasının B sütunundaki ürünleri listeledim. Yeşil renkli "Komut Düğmesi"ne tıklandığı zaman ürün listesi açılmaktadır.

2- "A Firması" sayfasında A sütunu ile G sütunu arasında bulunan "Cari Özeti" kısmına kaydedilen faturaların numarası ve tarihi, faturanın sıra numarasına göre ilgili faturanın tarih ve numara kısmına gitmektedir.

3- "A Firması" isimli sayfada "Sıra No" isimli A sütununda hücreye tıklandığında ilgili faturayı bulabilmek için istenilen bir hücreye gitmesi ve faturadan "Cari Özeti"ne dönebilmek için faturaların üst kısımlarında bulunan Sarı renkli hücre içindeki "Özete dön"e tıklandığında "Cari Özeti"ne dönmesi için "Köprü" yöntemini de denedim, makroda denedim.

Yapmak istediğim şey;

Yeni bir firma ile çalışılmaya başlandığında; "A Firması" isimli sayfanın üzerinde sağ tıklayıp "Taşı veya Kopyala..." dedikten sonra açılan menüde altta bulunan "Kopya Oluştur" kutucuğunu işaretleyip, "(Sona Taşı)" işaretleyip "Tamam"a tıklandığında, sayfaların en sonuna "A Firması (2)" isimli bir sayfa oluşmaktadır. Daha sonra bu sayfanın adı yeni firma ismi ile değiştirilecektir. Ancak yeni oluşan sayfada ne köprüler ne de makrolar çalışmakta.
 

Ö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
Merhaba,

Doğru cevap verebilmem için dosyanızı görmekte fayda var. Siteye ekleyemezseniz, paylaşım sitesine eklermisiniz.

www.dosya.tc


.
 

Ö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
Merhaba,

Sayfadaki köprüleri silip aynı işlemi kod ile yaptırdım. Ayrıca 1,2,3 butonlarına yazdığınız kodları sayfadan değil Module ekleyip burdan aldırdım.

.
 

Ekli dosyalar

Katılım
22 Şubat 2012
Mesajlar
29
Excel Vers. ve Dili
Türkçe
Altın Üyelik Bitiş Tarihi
01.06.2019
Ömer Hocam "Ayrıca 1,2,3 butonlarına yazdığınız kodları sayfadan değil Module ekleyip burdan aldırdım." bu kısmı anladım ve diğer hücrelere uygulayabiliyorum.

Ancak L sütununda belirlediğimiz hücrelerden birisi aktif olunca hemen yanındaki hücreye gelen commond buttonu diğer hücrelere taşıyamadım. Mesela dördüncü fatura şablonunu kopyalayıp alt tarafa yapıştırırsam o fatura içinde command butonun hareket etmesine ihtiyacım olucak. Benim gönderdiğim kodda parantez içine (If Intersect(Target, [L2:L27, L45:L70, L88:L114]) Is Nothing Then Exit Sub) ekleyerek yapabiliyordum ancak sizi iki satır eklemişsiniz ve şimdi eklediğimde çalışmadı. Mesela L88:L114 aralığını L115 e genişletmek istesem yada L122:L147 aralığını eklemek istesem yapamıyorum.

Bir diğer takıldığım şey ise “özete dön”ün çalışma mantığını anlayamamak oldu. Bu kısmını en kötü ihtimalle modüle makro yazarak (1,2,3 te olduğu gibi) istediğim satıra gitmesini sağlayabilirim ama commond buttonu taşıma konusunda yetersiz kaldım.
Kodun çalışma mantığını anlatabilirseniz kendim yapabilirim.
 

Ö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
gönderdiğim kodda parantez içine (If Intersect(Target, [L2:L27, L45:L70, L88:L114]) Is Nothing Then Exit Sub)
Liste uzayacaksa;

If Intersect(Target, [L:L]) Is Nothing Then Exit Sub

Şeklinde yazmanız daha mantılı.

Çalıştıramamanızdaki neden;

If Target.Offset(0, -2) <> "" Then

Şartı olabilir. Bu şart J sütununda dolu olmasına bakar. Yani bu sütunda numaralar kullandığınız için her zaman dolu olur diye düşündüm. Değil mi?

Bir diğer takıldığım şey ise “özete dön”ün çalışma mantığını anlayamamak oldu
Bununla ilgili birşey yapmanıza gerek yok.

L sütununda "Özete Dön" ibaresine tıklarsanız tıkladığınız sıradaki tabloya göre sizi A sütununda ilgiliyi sıraya götürür.

.
 
Katılım
22 Şubat 2012
Mesajlar
29
Excel Vers. ve Dili
Türkçe
Altın Üyelik Bitiş Tarihi
01.06.2019
Liste uzayacaksa; If Intersect(Target, [L:L]) Is Nothing Then Exit Sub Şeklinde yazmanız daha mantılı. Bu önerinizi daha mantıklı ve pratik buldum, dikkate alacağım.

Ancak If Target.Offset(0, -2) <> "" Then şartına gerek yok. Çünkü J sütunu boş olabilir. O sebeple bu kısma gerek yok. (Kaldırmayı denedim ama hata verdi)

Birde “Özete Dön”ü hala anlayamadım/çalıştıramadım. Sanırım çalışma mantığı şöyle:

S1 ve S2 şeklinde 2 değişken ile S3=4 şeklinde bir sabit tanımlamışsınız.

S1 L sütunu yukarıdan aşağıya doğru tarayıp “Özete Dön” leri sayıyor ve kaçıncı “Özete Dön” ise S1 değişkeni o sayı oluyor.

S2’yi tam olarak anlayamadım.

Sonuç itibari ile dediğiniz gibi L sütunundaki “Özete Dön” tıklandığında, kaçıncı “Özete Dön”e tıklanmışsa (Kaçıncı faturaysa) o numaralı özete gidiyor (olması gerekir)

Fatura tablosunu kopyalayıp K131 den itibaren yapıştırdığımda 4. “Özete Dön”e tıkladığımda kod çalışmadı. Ben bu şekilde aşağıya doğru 100 civarı fatura kopyalamayı planlıyorum. Bu şekilde, herşeyi çalışan bir firma sayfası oluşturduktan sonra her yeni firma için o sayfayı kopyalayarak çoğaltacağım. Bu çoğaltma işlemlerinde kullanmak üzere bir butona daha ihtiyacım olacak.

Örnek olarak; Özet kısımlarına ve Fatura tablosuna girişler yapılmış bir sayfayı kopyalayıp çoğalttığımda doğal olarak boş bir sayfaya ihtiyacım olacak. Belirleyeceğim alanları silen bir makro ve bu makroyu çalıştırmak üzere şifreli bir command buton bu sorunu çözecektir.

Yani bir command buton olsun ama tıklandığında makroyu çalıştırmak için şifre istesin (ki kazara ve yetkisiz kişiler verileri silmesin) şifre girildiğinde ise çalışan makro belirlenecek alanlardaki verileri silsin.

Şifreli bir command button daha farklı alanlarda da kullanılabilecek güzel bir arşiv uygulaması olacaktır.
 

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
Eklediğiniz dosyada L131 tıkladığımda imleç A7 gidiyor.
------------------------------------------------------------------------------------------------

Boş hücre şartını değiştirdim.

Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, [L:L]) Is Nothing Then Exit Sub
If Target.Value <> "" And Target.Value <> "Özete Dön" And Target.Value <> "Ürün Adı" Then
Cmd1.Top = ActiveCell.Top
End If
s3 = 4
If Target = "Özete Dön" Then
s1 = WorksheetFunction.CountIf([L:L], "Özete Dön")
s2 = WorksheetFunction.CountIf(Range("L" & Target.Row + 1 & ":L" & Rows.Count), "Özete Dön")
Range("A" & s3 - 1 + s1 - s2).Select
End If
End Sub
.
 
Üst