• DİKKAT

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

İki Satırı Birbirine Bağlama Yardım

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
24 Ağustos 2017
Mesajlar
18
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 - Türkçe
Arkadaşlar merhaba

https://drive.google.com/open?id=0B2vbY-Gpad39NnljSG9RS0thWWc

Şu eklediğim linkteki dosyada D9 ve D10 hücrelerini birbirine bağlamak istiyorum. D9 AWG cinsinden, D10 mm2 cinsiden kablo kesiti. Benim istediğim ise kullanıcı hangisini girerse diğerinin ona göre hesaplanması. Aslında bunu ekteki dosyada yaptım ama D9'a veri girdiğimde D10 hesaplanınca D10'da değişmiş oluyor ve D9 D10'a göre tekrar hesaplanıyor ve ikisi de 0 olana kadar işlem sürüyor. Bunu nasıl önlerim?

Kullandığım kodlar;
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells1 As Range
    Dim KeyCells2 As Range
    Dim KeyCells3 As Range
    Set KeyCells1 = Range("D9")
    Set KeyCells2 = Range("D10")
    Set KeyCells3 = Range("D5:D10")
    
    If Not Application.Intersect(KeyCells1, Range(Target.Address)) Is Nothing Then
        Range("D10").Formula = "=3.14159*((0.127*(92^((36-D9)/39)))^2)/4"
    End If
    If Not Application.Intersect(KeyCells2, Range(Target.Address)) Is Nothing Then
        Range("D9").Formula = "=36-(39*LOG((KAREKÖK((D10*4)/3.14159)/0.127),92))"
    End If
    If Not Application.Intersect(KeyCells3, Range(Target.Address)) Is Nothing Then
        If Range("D14") >= -1 And Range("D5").Value <> "" And Range("D6").Value <> "" _
        And Range("D8").Value <> "" And Range("D9").Value <> "" And Range("D10").Value <> "" Then
            Range("C14").Value = "Applicable"
            Range("C14").Font.Color = RGB(84, 130, 53)
        ElseIf Range("D14") < -1 And Range("D5").Value <> "" And Range("D6").Value <> "" _
        And Range("D8").Value <> "" And Range("D9").Value <> "" And Range("D10").Value <> "" Then
            Range("C14").Value = "Not Applicable"
            Range("C14").Font.Color = RGB(255, 0, 0)
        Else
            Range("C14").Value = ""
        End If
    End If
End Sub
 
Son düzenleme:
Arkadaşlar yardımcı olabilecek yok mu
 
Son düzenleme:
Merhaba.

D9 ve D10'a değer yazarken döngüye girmemek için aşağıdaki gibi olabilir.
Hesaplama yapılırken önce, A1 hücresine 1 yazılıyor,
hesaplama sonucu (formül değil formülün sonucu) hücreye yazıldıktan sonra A1'e yazılan 1 değeri siliniyor.
D10 için de YUVARLAMA uygulattım (gerekli mi bilemiyorum).

Mevcut kodlarınızda yer alan ve sayfada 11'inci satırdan sonraki değerlere yönelik işlemi anlamadığım için ona yönelik bir kod yok.
.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [D9:D10]) Is Nothing Then Exit Sub
If [A1] = 1 Then Exit Sub
If Target.Row = 10 Then
    [A1] = 1: [D9] = Evaluate("=ROUNDDOWN(36-(39*LOG((SQRT((D10*4)/PI())/0.127),92)),0)")
End If
If Target.Row = 9 Then
    [A1] = 1: [D10] = Evaluate("=[COLOR="red"]ROUND[/COLOR](PI()*((0.127*(92^((36-D9)/39)))^2)/4,2)")
End If
    [A1] = ""
End Sub
 
Verdiğim kodun sonuna doğru [C14] = .... şeklinde bir satır kalmış onu silebilirsiniz (ben cevabımdaki kod'dan sildim)
Ayrıca mevcut formülünüzdeki 3,14159 yerine PI() kullandığımı fark etmişsinizdir sanırım.
.
 
Hocam aynı sub içerisinde D5-D10 aralığının değişimine bağlı başka işlem yapmak istediğim için olmuyor bu.

Kod:
If Not Application.Intersect(KeyCells3, Range(Target.Address)) Is Nothing Then
        If Range("D14") >= -1 And Range("D5").Value <> "" And Range("D6").Value <> "" _
        And Range("D8").Value <> "" And Range("D9").Value <> "" And Range("D10").Value <> "" Then
            Range("C14").Value = "Applicable"
            Range("C14").Font.Color = RGB(84, 130, 53)
        ElseIf Range("D14") < -1 And Range("D5").Value <> "" And Range("D6").Value <> "" _
        And Range("D8").Value <> "" And Range("D9").Value <> "" And Range("D10").Value <> "" Then
            Range("C14").Value = "Not Applicable"
            Range("C14").Font.Color = RGB(255, 0, 0)
        Else
            Range("C14").Value = ""
        End If
    End If

Bu kısımı açıklayayım; D5-D10 arasındaki değerler ile D14 hücresi formül üzerinden hesaplanıyor.(Makrosuz) Daha sonra C14 hücresine D14'ün değerine göre uygun ya da değil yazmak için bu kısım var. Hücrelerden(D5-D10) birisi boş bırakılırsa uygun ya da değil cevabı verilmesin istiyorum.
 
Şu an bilgisayar başında değilim, başka cevao yazan olmazsa biraz sonra bakmaya çaluşurım.
 
C14 hücresindeki formülün LOG((D5-(D5*D12/100))/D5) kısmı hata verdiğinde ne olacak?
Çünkü (100*D7*D8)/(D5^2) işleminin sonucu 100'den küçük olduğunda LOG işlevi hata veriyor.
 
Hocam o formül hata vermiyor bende. Ayrıca (100*D7*D8)/(D5^2) formülü yüzde gerilim düşüm olduğu için zaten her zaman 100'den küçük çıkacaktır. Log işleminin sonucunun negatif olmasını bekliyorum zaten ve öyle de oluyor.
 
Ömer Hocam yardımların için teşekkür ederim. Ben sana gelebildiğim son yere kadar excel dosyasını atıyorum.

https://drive.google.com/open?id=0B2vbY-Gpad39ekZqTkhmLWJxVlk

D9 ya da D10 hücrelerinden birisine elle giriş yapılınca diğerinin 1 sefer hesaplanmasını istiyorum. Şuanki durumda ise ikisini sürekli birbirine göre hesaplıyor ve yuvarlama işlemlerinden dolayı bir kaç kez aynı sonucu bulunca duruyor. Bunu çözebilirsen çok sevinirim.
 
Tam anlatamadım galiba.
LOG parantezinin içindeki işlemin sonucu NEGATİF olduğunda LOG hata veriyor.

Tabi ben işlemi bilemiyorum, LOG işlevi parantezinde atıf yapılan hücrelere rastgele değerler
(anlamlarını bilemediğim için gerçekleşmeyecek değerler de yazıyor olabilirim tabi)
yazdığımda; eğer işlemin sonucu NEGATİF ise LOG işlevi hata veriyor.

Bu da normal durum elbette; zira hiçbir değerin karesi NEGATİF olamayacağından LOG hata verir.

Yanlış bilmiyorsam LOG(SAYI;TABAN) (taban yazılmadığına göre varsayılan 10 tabanı)
şeklindeki hesaplamanın sonucu kaçsa; 10'un o kuvveti LOG'unu bulduğumuz sayıyı verir.
Örneğin LOG(250) => 2,397940009 olduğuna göre, 10^2,397940009 => 250 sonucunu verir.
Buradan benim anladığım LOG(-250) => HATA verir.

Sorum bu idi aslında.
LOG parantezinin içi NEGATİF olduğunda LOG formülü hata verir, bu durumda ne yapılacak?

İLAVE NOT:
Bu mesajı son cevabımınzdan önce yazdım. Son cevabınıza ve ekindeki belgeye bakmadım.

.
 
Önce yorum yapmadığınız bir önceki cevabımı okuyunuz.

Örneğin D5=>70 D6=> 566 D7=> 130 D8=> 41
yazıldığında LOG işlevi parantezinin içerisinde yer alan işlemin sonucu -0,087755102 (NEGATİF)
dolayısıyla da LOG işlevi HATA veriyor.

Son bir durum daha var.
D9 hücresine yazılan değere göre D10 hesaplanıyor ama D10'da açılır liste şeklinde kullanılan veri doğrulama
var.
D9'daki değere göre D10 için hesaplanan değer doğal olarak D10'daki açılır listedeki seçeneklerden hiçbiriyle
TAM OLARAK eşleşmeyecek.
Ya en küçük değer olan 0,22'den küçük, ya en büyük değer olan 2,5'tan büyük,
ya da açılır listedeki seçeneklerden ikisinin arasında olacak.

Bu üç duruma göre D10 için nasıl bir işlem istiyorsunuz?
D9'a göre hesaplanan değer mi yoksa açılır listedeki seçeneklerden,
hesaplanan değere en yakın küçük/büyük (tercihi siz söyleyeceksiniz) değer mi yazılacak?
.
 
Ömer Hocam kusura bakmayın, forumun ikinci sayfaya geçtiğini fark etmemişim. Öncelikli olarak hata almanızın sebebi D7 hücresi için 130 çok fazla. Bu hücre D10'un değerine göre hesaplanıyor ve toplam kablo direncini gösteriyor. D10 hücresinde liste olması ise aynı dosyanın farklı bir versiyonunda olan özellik, sanırım yanlış dosya gönderdim. Aşağıdaki alıntının içerisinde bulunan dosyayı tekrar kontrol ettim. Geldiğim son nokta bu. Aslında bir bakıma istediğim gibi çalışıyor kod fakat D9-D10 arasında döngü oluşmasını engelleyemedim. Bu konuda yardımcı olabilir misiniz?

https://drive.google.com/open?id=0B2vbY-Gpad39ekZqTkhmLWJxVlk

D9 ya da D10 hücrelerinden birisine elle giriş yapılınca diğerinin 1 sefer hesaplanmasını istiyorum. Şuanki durumda ise ikisini sürekli birbirine göre hesaplıyor ve yuvarlama işlemlerinden dolayı bir kaç kez aynı sonucu bulunca duruyor. Bunu çözebilirsen çok sevinirim.

Not: Aşağıdaki iki satır normalde dosya kilitli dosya olacağı ve D5,D6,D8,D9,D10 hücrelerinin dışındaki hücreler düzenlemeye kapalı olacağı için var. Buradaki şifre ise dosya şifresi olacak
'Sheets("dB Loss Calculator").Unprotect "şifre" 'Dosya kilitlerken şifreyi buraya yazmayı unutmayın
'Sheets("dB Loss Calculator").Protect "şifre" 'Dosya kilitlerken şifreyi buraya yazmayı unutmayın
 
Şimdi bir şey fark ettim, ben "D9-D10 arasındaki bağlantı" ile "uygun ya da uygun değil yazısının yazılması" işlemlerini birbirinden ayırmak için D7 hücresinin formülünü hücreye yazmak yerine D9 ve D10 değişince tetiklenen kısma Evaluate olarak yazmıştım. Bunun sonucunda kablo uzunluğu olan D6 değişince D7 hücresinin değişmesi gerekirken sabit kalıyor. Dolayısıyla 45. ve 35. starlarındaki

Kod:
Range("D7").Value = Evaluate("=IF(D6<=20000,2*D6*(1.995/10^8)/(D10/10^6),""Inf."")")

komutunu

Kod:
Range("D7").Formula = "=IF(D6<=20000,2*D6*(1.995/10^8)/(D10/10^6),""Inf."")"
olarak değiştirmek gerekiyor.

Dosyayı düzenleyip tekrar paylaşıyorum;
Excel Video seti için altın üyelik aldım, artık dosyayı siteye yükleyebilirim :biggrin: Drive'a yüklediğim eski dosyaları sildim
 

Ekli dosyalar

Son düzenleme:
Tekrar merhaba.

Dün foruma pek bakamadım.
Ekteki belgeyi inceleyip, denemeler yapıp, sonucunu foruma yazarsınız.
Dosya içerisinde açıklamalar da yazdım.
SAYFA KORUMA ŞİFRESİ 1

Bu arada ALTIN ÜYELİK hayırlı olsun.
Umarım forumun müdavimi olursunuz.

Faydalanacağınızdan ve fayda sağlayacağınızdan eminim.

İyi çalışmalar dilerim.

NOT: Yeni bir belge ekledim. Belgede birkaç ekleme yaptım. 14.09.2017 13:12
.
 

Ekli dosyalar

Ömer Hocam her şey için teşekkür ederim. Benim aklıma bile gelmeyen bir sürü fonksiyon eklemişsiniz. Bu dosyada kullanmayacak olsam da öğrenmemde baya faydalı olacak. Emeğinize sağlık. Tam olarak benim istediğim şeyi yapıyor. Tekrardan teşekkür ederim.
 
Hocam C14'e koşullu biçimlendirme eklemişsiniz, bunu koddan yapmak mümkün mü acaba?

DÜZENLEME:

Kod:
If [C14] = "Applicable" Then
    Range("C14").Font.Color = RGB(84, 130, 53)
ElseIf [C14] = "Not Applicable" Then
    Range("C14").Font.Color = RGB(255, 0, 0)
End If
 
Son düzenleme:
Belge eklediğim son cevabıma yeni bir belge daha ekledim.
Sayfayı yenileyerek yeni belgeyi indirip kontrol edin.
.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst