Çoklu düşeyara

Katılım
13 Kasım 2022
Mesajlar
10
Excel Vers. ve Dili
excel
Arkadaşlar kolay gelsin, excelde "Tablo1" adında tablom var, a1= "Kontrat, b1="Manuel", c1="Durum" başlıkları bulunmakta.

A sütununda kontrat bilgileri yer almakta, kontrat1, kontrat2 şeklinde ama karışık şekilde ve tekrar ederek devam ediyor;
A2=kontrat1 a3=kontrat2 a4=kontrat1 a5=kontrat3 a6=kontrat1 şeklinde uzayıp gidiyor.

C sütununda kontratların durumunda "Open" yazıyor
C sütununda şöyle bir formül var : =EĞER(B2="Closed";"Closed";B2)

İstediğim ve yapamadığım şey şu;
B6 hücresine "Closed" yazacağım ve a6 daki kontrat bilgisine göre (örnekte"kontrat1" oluyor) o kontrat numarasına sahip tüm kontratların bilgilerini C sütununda "Close" a çekecek.

Gölge sütun oluşturup düşeyara ile çözmeye çalıştım ancak makro olması ve döngü kurulması gerekli sanırım.
Yardımcı olursanız sevinirim.
Altın üye olmadıgım icin ek koyamadım kusura bakmayın, inşallah derdimi anlatabilmişimdir.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Aşağıdaki kodu sayfanızın kod bölümüne yapıştırabilirsiniz.
B sütununa Closed yazınca, A sütunundaki kontrat adıyla kontratların C sütununa Closed yazar
B sütununa Open yazınca, A sütunundaki kontrat adıyla kontratların C sütununa Open yazar.

CoffeeScript:
Private Sub Worksheet_Change(ByVal Target As Range)
    SonSat = Range("A1").End(xlDown).Row
    If Intersect(Target, Range("B2:B" & SonSat)) Is Nothing Then Exit Sub
    If Not (Target.Value = "Closed" Or Target.Value = "Open") Then Exit Sub
    Application.EnableEvents = False
    Dizi = Range("A2:C" & SonSat).Value
    For i = 1 To UBound(Dizi)
        If Dizi(i, 1) = Target.Offset(, -1).Value Then
            Dizi(i, 3) = Target.Value
        End If
    Next i
    Range("A2").Resize(UBound(Dizi), 3) = Dizi
    Application.EnableEvents = True
End Sub
 
Katılım
13 Kasım 2022
Mesajlar
10
Excel Vers. ve Dili
excel
Aşağıdaki kodu sayfanızın kod bölümüne yapıştırabilirsiniz.
B sütununa Closed yazınca, A sütunundaki kontrat adıyla kontratların C sütununa Closed yazar
B sütununa Open yazınca, A sütunundaki kontrat adıyla kontratların C sütununa Open yazar.

CoffeeScript:
Private Sub Worksheet_Change(ByVal Target As Range)
    SonSat = Range("A1").End(xlDown).Row
    If Intersect(Target, Range("B2:B" & SonSat)) Is Nothing Then Exit Sub
    If Not (Target.Value = "Closed" Or Target.Value = "Open") Then Exit Sub
    Application.EnableEvents = False
    Dizi = Range("A2:C" & SonSat).Value
    For i = 1 To UBound(Dizi)
        If Dizi(i, 1) = Target.Offset(, -1).Value Then
            Dizi(i, 3) = Target.Value
        End If
    Next i
    Range("A2").Resize(UBound(Dizi), 3) = Dizi
    Application.EnableEvents = True
End Sub
üstadım kod çalışıyor, teşekkür ederim. yalnız şöyle bir sıkıntı var. liste uzun oldugu için ve kod devamlı çalıştığı için tepkisi biraz uzun sürüyor ve "manuel" sütununda birden fazla hücreyi seçince hata veriyor.
acaba bu kodu bir butona makro olarak atasak daha hızlı ve sağlıklı çalışırmı?
module oluşturup onda deneyeyim dedim ama object hatası alıyorum, o şekilde düzenleme şansımız varmı?
teşekkürler.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
1300 satırda denedim.
Kod 0 saniye civarında sürüyor
Birden fazla hücreyi seçmeniz şart değilse böyle kullanmanızı tavsiye ederim.
Verdiğim kod önceki mesajımda da belirttiğim üzere sayfanın kod sayfasında olmak zorunda.

Modüle içinde çalıştırmaktan kastınız B sütununda aktif (seçili) olan satıra göre mi çalışsın? Bunu mu istiyorsunuz?
 
Katılım
13 Kasım 2022
Mesajlar
10
Excel Vers. ve Dili
excel
Hocam, çalıştırmak istediğim yer bu kadar sade değildi, yanyana 20 kolon ve kolonlarda formül vardı, koddaki offset değerini tutturamamısım sanırım, düzelttim çalıştı 1-2 saniye sonra geliyor. teşekkür ederim
 
Katılım
13 Kasım 2022
Mesajlar
10
Excel Vers. ve Dili
excel
üstadım kod çalışıyor, teşekkür ederim. yalnız şöyle bir sıkıntı var. liste uzun oldugu için ve kod devamlı çalıştığı için tepkisi biraz uzun sürüyor ve "manuel" sütununda birden fazla hücreyi seçince hata veriyor.
acaba bu kodu bir butona makro olarak atasak daha hızlı ve sağlıklı çalışırmı?
module oluşturup onda deneyeyim dedim ama object hatası alıyorum, o şekilde düzenleme şansımız varmı?
teşekkürler.
Hocam danışmak istediğim bir konu daha var, söz konusu kodu calıstırdıgımda, diyelimki 4 tane kontrat1 var bir tanesini Closed yapınca hepsi otomatik closed oluyor. Buraya kadar sorun yok. ancak o kontratı yanlışlıkla kapattım diyelim, bu sefer "open" a çekiyorum orda da sorun yok hepsini open diye düzeltiyor. ancak ben open verisinin orda gözükmesini istemessem, open yazılarını hücreden tek tek sildiğimde sorun olmuyor ama hepsini seçip silersem "Run-time error 13: type mismatch" hatası alıyorum. bunu engelleme sansım varmıdır
 
Katılım
13 Kasım 2022
Mesajlar
10
Excel Vers. ve Dili
excel
Hocam, uğrasmayın boşyere başka bir sıkıntı oluştu.
excelim şu şekilde calısıyor. product diye bir sayfam var ben o sayfaya veri girdikçe product_mask sayfasına aynı veriler tabloya düşeyara ile yazılıyor. product sayfasında da düşeyara ile product_mask sayfasındaki tablodan veri cekiyorum. kendi içinde bir döngü oluşturmustum.
sebebi; product sayfasında open olan contractları liste halinde gösterip listeden seçilince tablodaki diğer verileri otomatik çekmesi ki o ürüne ait diğer kontrat bilgilerini devamlı girmeyeyim diye. şimdi farkettim bu kodu calıstırınca sebebini bilmediğim birşekilde listeden secilen contractın diğer verilerini getirmiyor. biraz karısık anlattım sanırım sizin de zamanınızı aldım kusura bakmayın. diğer husus daha öncelikli oldugu icin bunu kullanamayacagım
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Kolay gelsin.
 
Üst