• DİKKAT

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

Eğer Hücre "E" Değerini İçeriyorsa= hücre değeri 0 olsun

Katılım
27 Ekim 2011
Mesajlar
8
Excel Vers. ve Dili
2008 Türkçe
Herkese merhabalar
Sorunumu kısaca anlatmaya çalışacağım

Komple bir sütunda hamstok değerleri var
Bu değerler sqlden çekliyor ve DÜŞEYARA(D8;stok;10;YANLIŞ) tarzında bir formül ile başka bir alana aktarılıyor.

Yalnız bazı değerler sql den içerisinde E harfi olan saçma bir şekilde geliyor.Aslında dengi ve manası 0.
Bu değer sayısal bir değer olmadığı için de sorun oluşuyor

Amacım şu.
Öyle bir makro olsun ki bu düşeyara ile 2. yere çektiğim değer eğer E içeriyorsa o hücre"0" a eşitlensin

Yardımcı olacak herkese şimdiden çok teşekkür ediyorum
 

Ekli dosyalar

Merhaba,

Aşağıdaki kodları dener misiniz?

Kod:
Sub Sifirla()
 
    Dim i As Long
    On Error Resume Next
    Application.ScreenUpdating = False
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        If Cells(i, "A") Like "*E*" Then Cells(i, "A") = 0
    Next i
    Application.ScreenUpdating = True
    MsgBox "İşlem Tamam..."
    
End Sub
 
Valla oldu üstad.
Çok teşekkür ediyorum.Büyüksün :)
Peki dosyayı açınca makronun otomatik çalışması için ya da arka planda sürekli çalışması için ne yapabilirim.
Sql den veriler değiştikçe yine "E" olacak ve maktoyu sürekli çalıştırmam gerekecek
Arka planda sürekli çalışmasının bir yolu var mıdır acaba?
 
Merhaba,

Sürekli çalışmasına gerek var mı bilmiyorm. Makroyu bir butonla ilişkilendirip gerektiğinde çalıştırabilirsiniz.
 
merhaba,

peki buna else uygulamasını nasıl yapacağım yani bu koşullar dışındaysa "acente" yaz demek istiyorum yardımcı olur musunuz.

ub Button1_Click()

Dim i As Long
On Error Resume Next
Application.ScreenUpdating = True
For i = 2 To Cells(Rows.Count, "F").End(3).Row
If Cells(i, "F") Like "*O*" Then Cells(i, "F") = "KASKO"
If Cells(i, "F") Like "*T*" Then Cells(i, "F") = "TRAFİK"
If Cells(i, "M") Like "*BANKA*" Then Cells(i, "K") = "TGB"
If Cells(i, "M") Like "*BR*" Then Cells(i, "K") = "BROKER"

'SADECE M SÜTUNU sütunu hiçbirini sağlamıyorsa K SÜTUNUNDA "ACENTE" YAZACAK if else yapılacak'


'deneme if else bölümü'


Next i
Application.ScreenUpdating = False
MsgBox "İşlem Tamam..."

End Sub
 
Hocam iyi günler. Peki eğer sayfa1 a4 hücresi sayfa2 b4 hücresinin bir kısmını veya tamamını içeriyorsa nasıl yazılır.
 
Deneyiniz.

If Sheets("Sayfa2").Range("B4") Like "*" & Sheets("Sayfa1").Range("A4") & "*" Then

Ya da;

If InStr(1, Sheets("Sayfa2").Range("B4"), Sheets("Sayfa1").Range("A4")) > 0 Then
 
Deneyiniz.

If Sheets("Sayfa2").Range("B4") Like "*" & Sheets("Sayfa1").Range("A4") & "*" Then

Ya da;

If InStr(1, Sheets("Sayfa2").Range("B4"), Sheets("Sayfa1").Range("A4")) > 0 Then
Teşekkürler Korhan Hocam. Bende siz cevaplamadan böyle denemiştim, "If S2.Range("C5") Like S1.Range("C5") & "**" Then"
Acaba sizce böylede uygun olurmu.
 
Çift yıldızı neden kullandığınızı anlamadım.

Benim verdiğim yöntem İÇERİR mantığıyla sorgulama yapar.

"*" & Aranan_Değer & "*" (içerir yöntemi)
"*" & Aranan_Değer (ile biter yöntemi)
Aranan_Değer & "*" (ile başlar yöntemi)
 
Çift yıldızı neden kullandığınızı anlamadım.

Benim verdiğim yöntem İÇERİR mantığıyla sorgulama yapar.

"*" & Aranan_Değer & "*" (içerir yöntemi)
"*" & Aranan_Değer (ile biter yöntemi)
Aranan_Değer & "*" (ile başlar yöntemi)

Afadersiniz Hocam formda kelime aratma konusundan aklımda kalmış.
Öğrettiğiniz için sağolun şimdi daha iyi anladım.
Aslında böyle sormamın sebebi bu koşulu çalışma kitabımda uygulayınca oluyor fakat kapalı dosyalardaki veriler için yapamadım sanırım dosyaları açtırmak lazım değil mi hocam.
Birde korhan hocam koşulu 2 ye çıkarmak için hem c5 hem c6 da içeriyorsa demek için araya Or ifadesi koyulmalı değilmi?
 
Farklı bir alternatif olarak, içinde E olan değerleri 0 olması için basit bir formül ekledim.
 

Ekli dosyalar

Merhaba,

Kapalı dosyalarda ne yapmaya çalıştığınızı bilemediğim için genel bir cevap vermem doğru olmaz. Önerdiğimiz sorgular açık çalışma kitabı için daha uygundur.

2 koşuldan bahsetmişsiniz. OR parametresi YA DA anlamındadır. Eğer bahsettiğiniz 2 koşulun aynı anda sağlanması gerekiyorsa AND kullanmanız uygun olacaktır. Koşullardan birisinin gerçekleşmesi sizin için yeterli ise o zaman OR kullanmalısınız.
 
Merhaba,

Kapalı dosyalarda ne yapmaya çalıştığınızı bilemediğim için genel bir cevap vermem doğru olmaz. Önerdiğimiz sorgular açık çalışma kitabı için daha uygundur.

2 koşuldan bahsetmişsiniz. OR parametresi YA DA anlamındadır. Eğer bahsettiğiniz 2 koşulun aynı anda sağlanması gerekiyorsa AND kullanmanız uygun olacaktır. Koşullardan birisinin gerçekleşmesi sizin için yeterli ise o zaman OR kullanmalısınız.

Merhaba KORHAN Hocam,
Eksik olmayın, sizin vaktinizi almayı sevmiyorum ama saatlerdir uğraşıyorum yapamıyorum. Or parametresinde emin oldum sayenizde sağolun.
Yapmak istediğim aşağaıya eklediğim kodlarla kapalı KAYITLAR klasöründeki birçok kapalı dosyalardaki sayfaların H8 hücresinde ki kelime çalışma kitabımın Q1 hücresinde ki kelimeleri içeriyorsa, bu sayfaların A2:I2 aralığını kopyalayıp çalışma kitabımdaki "Listele" sayfasının 4.satırının a hücresine yapıştırsın.Sonrada Listele sayfasına her veriyi yapıştırdığı satırın herhangibir hücresine, kopyaladığı sayfaya köprü atasın ki o sayfaya kolayca ulaşabileyim. Biraz karışık Hocam fakat benim için önemli. Tekrar sağolun ilginize.
Kod:
Sub Klasorden_Durumu_Guncelle()
Application.ScreenUpdating = False
Dim evn As Object, klasoradi As String, kitap As Workbook
Dim i As Integer, x As Integer, Dosyam As Workbook
Set kitap = ThisWorkbook
Set S1 = Sheets("Listele")
'S1.Range("A4:J" & S1.Rows.Count).ClearContents
klasoradi = "KAYITLAR"
Set evn = CreateObject("scripting.filesystemobject")
Set dosyalar = evn.getfolder(ThisWorkbook.Path & Application.PathSeparator & klasoradi)
For Each Klasor In dosyalar.Files
    Set Dosyam = GetObject(Klasor.Path)
    Son = S1.Range("B65536").End(3).Row
    Son2 = S1.Cells(S1.Rows.Count, 1).End(3).Row
    Son3 = Sheets("KAYITLAR").[a65536].End(3).Row + 1
      For i = 1 To Dosyam.Sheets.Count
       For x = 4 To Son
           If S1.Range("Q1") Like "*" & Dosyam.Sheets(i).Range("H8") & "*" Then
               Dosyam.Sheets(i).Range("I2").Copy
               S1.Range("a", x).PasteSpecial xlPasteValues
               'S1.Range("a", x) = Dosyam.Sheets(i).Range("I2") Bu deneme kodudur.
           End If
         Next x
       Next i
    Dosyam.Close False
Next Klasor
Set evn = Nothing: Set kitap = Nothing: Set Dosyam = Nothing
Application.ScreenUpdating = True
End Sub
 
Kod eklemek yerine örnek dosyalarınızı paylaşırsanız daha sağlıklı yardım alabilirsiniz.
 
Merhaba,

Kapalı dosyalarda ne yapmaya çalıştığınızı bilemediğim için genel bir cevap vermem doğru olmaz. Önerdiğimiz sorgular açık çalışma kitabı için daha uygundur.

2 koşuldan bahsetmişsiniz. OR parametresi YA DA anlamındadır. Eğer bahsettiğiniz 2 koşulun aynı anda sağlanması gerekiyorsa AND kullanmanız uygun olacaktır. Koşullardan birisinin gerçekleşmesi sizin için yeterli ise o zaman OR kullanmalısınız.

Sayın KORHAN Hocam aşağıya eklediğim kodlarla istediğimin büyük kısmını yaptım fakat köprüyü nasıl ekleyebilirim.

Kod:
Set Dosyam = Application.Workbooks.Open(klasor.Path)
      For i = 1 To Dosyam.Sheets.Count
           If Dosyam.Sheets(i).Range("H8") Like "*" & S1.Range("Q1") & "*" Then
           S1.Range("a65536").End(3)(2, 1) = Dosyam.Sheets(i).Range("H8")
               Dosyam.Sheets(i).Range("a2:ı2").Copy
             S1.Range("b65536").End(3)(2, 1).PasteSpecial xlPasteValues
            End If
       Next i
    Dosyam.Close False
Next klasor
 
Forumda hyperlink ifadesi ile arama yapınız.
 
Forumda hyperlink ifadesi ile arama yapınız.

Hocam hyperlink konusunu daha önce çok araştırdım hatta kayıt makrosuyla ilgili sorum vardı size. Kayıt makrosunda o durumu çözmüştüm. Deneme yaparak adres kısmına tanımladığım ad ifadesini subadress kısmınada ad1 ifadesini kullanmıştım. Bu ad ve ad1 e sayfa adlarını ve hücresini tanınlamıştım. Fakat şimdi aklıma hiç birşey gelmiyor.
 
Geri
Üst