düşeyara fonksiyonunun daha bi gelişmişi var mı

Katılım
9 Eylül 2005
Mesajlar
4
ornekteki dosyaya bakarsanız nasıl bir işlem yapmak istediğimi sanırım daha ii anlayacaksınız.

şimdi benim istediğim şey şu düşeyara komutuna benzer bişey ama 3 kritere göre arama yapmam gerekiyor.

mesela ikinci comboboz için düşeyara komutu yeterli çünkü o aşamada sadece 1. sütundaki bilgiye ihtiyacımız var

ama 3. combo box a veri girerken hem birinci sütun hem ikinci sütundaki verilerde eşleme yapmamız gerekiyor.

aynı şekilde derslerin bilgilerini spreadsheet nesnesine işlerken ilk üç sütundaki bütün verilerde eşleme yapmamız gerekiyor.

ben bunu macro kodları ile aktif sayfada arama yaparak hallettim ama çok kırılgan bi kod en ufak bi hatada herşey alt üst oluyo tek yapabileceğiniz şey kaydetmeden kapatıp herşeyi baştan almak oluyo. bunu arama yapmadan daha doğrusu activecell veya activesheet e ihtiyaç duymadan (kaynak sayfası gizli iken) yapabilecek bi kod veya bi fonsiyon var mı.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
.

Soruyu yanlış anlamışım kusura bakmayın
 
Katılım
9 Eylül 2005
Mesajlar
4
bu doğrusunu anladığınız anlamına geliyo mu
yani daha ayrıntılı anlatayım mı yoksa anladınız mı
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sn cyberia

Dosyanızı incelediğimde, bir userfom tasarlanıp içine gerekli nesnelerin yerleştirilip sonrada kodların yazılmasını istiyorsunuz gibi geldi bana. Fakat dosyada kullandığınız kelimelere baktığımızda bir userform tasarlayabilecek bilgiye sahibi olduğunuz anlaşılıyor. Siz gerekli tasarımı yaparak foruma eklerseniz, nesnelere gerekli kodları yazmak konusunda bizler size yardımcı olmaya hazırız. Eğer ben yanlış anlamış isem lütfen gerekli açıklamaları yapın, bizde ona göre yardımcı olmaya çalışalım. Ayrıca konu başlığınız sorunuzu açıklamakta çok yetersiz, açıkçası ben soru başlığınızı görünce size "düşeyara" fonksiyonunun yerine "indis" formülünü önerecektim.
 
Katılım
9 Eylül 2005
Mesajlar
4
bende tamamen çalışan bi program var zaten
ben sadece arama komutu ile yaptığım kısmı değiştirmek istiyorum.

çünkü arama komutları aktif hücreden sonrası için arama yapıyor.
aktif hücre olması gereken yerde deilse program tamamen yanlış çalışıyor.

siz bana indis komutunu biraz anlatırsanız sevinirim.

PS: diğer forumlarda hazır kod istemek yasaktı (en azından iki sene önce bu programın ilk satırlarını yazarken öyleydi) burada böyle bi kural yoksa programın tamamını gönderebilirim. ama yine de isteğim kodların tamamının bana ait olmasıdır. şu anda öğrenme aşamasında olduğum için herşeyi anlayıp kendim uygulamak istiyorum.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

arama motoruna indis yazarsanız 32 adet soru ve cavap var ,ben 1 2 link verebilirdim ama sizin isteğinize uygununu seçmeniz açısından arama yaparsanız daha iyi olur

Birde topla.çarpım fonsiyonuna bakarmısınız

Saygılarımla
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
çünkü arama komutları aktif hücreden sonrası için arama yapıyor.
aktif hücre olması gereken yerde deilse program tamamen yanlış çalışıyor.
Aslında kodlarınızı görmeden yorum yapmak hatalı olabilir, fakat şunu söyleyebilirim, anladığım kadarı ile kodlarınız içinde hücre tanımlamasında activecell komutunu kullandınız. Ben olsam bu komut yerine tam hücre ismini kullanırdım. Yani range("a1") veya cells(1,1) gibi, böylece kodun hata yapmasını engellemiş olurdunuz. Bu durumda kodlarınızın tamamında değişiklik yapmanın zor olduğunu düşünürsek, activecell ile işlem yapmadan önce ilave bir komutla imleçi istediğiniz hücreye taşımanız gerekecektir.

diğer forumlarda hazır kod istemek yasaktı (en azından iki sene önce bu programın ilk satırlarını yazarken öyleydi) burada böyle bi kural yoksa programın tamamını gönderebilirim.
Bizde hazır kod yasak gibi bir durum asla sözkonusu değildir, biz burada kod pazarlamıyoruz, sadece karşılıksız bilgi paylaşıyoruz.

ama yine de isteğim kodların tamamının bana ait olmasıdır. şu anda öğrenme aşamasında olduğum için herşeyi anlayıp kendim uygulamak istiyorum.
Bu görüşünüzü takdir ve tebrik ediyorum. Fakat size yardımcı olmak için hiç olmazsa basite indirgenmiş bir örnek dosya ekleyin. Asıl dosyanızı eklemenize gerek yoktur, hatta bu dosyanın eklenmesi inceleme yapmayı dahada zorlaştırır.

İndis formülüne gelince; ben yerleşik fonksiyonlardan bahsetmiştim. Bu fonksiyonun vba daki kullanımını kasdetmemiştim. Eğer sayfa üzeri fonksiyon olarak incelemek isterseniz aşağıdaki linkleri inceleyebilirsiniz.

http://www.excel.web.tr/viewtopic.php?t=2019&highlight=indis

http://www.excel.web.tr/viewtopic.php?t=1404&highlight=indis

Aşağıdaki linktede DÜÞEYARA ve İNDİS işlevlerinin bir mukayesesi mevcuttur.

http://www.excel.web.tr/viewtopic.php?t=2359&highlight=indis

NOT:Ayrıca excelin yardım dosyalarındada detaylı bilgi bulabilirsiniz.
 
Katılım
9 Eylül 2005
Mesajlar
4
programın hepsini gönderiyorum.
makro kodlarının içinde olabildiğince anlatmaya çalıştım.

kaynak sayfasındaki verinin büyük bi bölümünü sildim(aksi halde dosya 1mb yi aşıyor.)(2000 satırı aşkın veri var normalde)

yardımlarınız için teşekkürler.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Dosyanızdaki kodları aşağıdakiler ile değiştirerek deneyin.

Ã?ncelikle kodların en üstüne aşağıdaki satırı yazın.

[vb:1:121ee1deca]Dim sat As Integer
[/vb:1:121ee1deca]

Comboboxlarada aşağıdaki kodları kopyalayın.

[vb:1:121ee1deca]Private Sub dersno_Change()
Set s1 = Sheets("kaynak")
section.Clear
For t = 1 To WorksheetFunction.CountA(Worksheets("kaynak").Range("a1:a65536"))
If s1.Cells(t, 1).Value = derskod Then
If s1.Cells(t, 2).Value = dersno Then section.AddItem Sheets("kaynak").Cells(t, 3).Value
If s1.Cells(t, 1) & s1.Cells(t, 2) = derskod & dersno Then
dersad.Caption = Cells(t, 5).Value
hocaad.Caption = Cells(t, 7).Value
sat = t
End If: End If
Next t
End Sub

Private Sub section_Change()
derssaat.Caption = Cells(sat, 8).Value
End Sub[/vb:1:121ee1deca]
 
Üst