• DİKKAT

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

makroda vlookup n/a değeri

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
18 Ağustos 2017
Mesajlar
119
Excel Vers. ve Dili
excel.2013
merhaba,
yeni abone oldum ve önceden takip ettiğim bir site
bir sorunum var vba uzmanları için oldukça kolay olsa gerek ancak ben yeni olduğum için zorlanıyorum

örnek olarak,a b,c sütunlarım var c sutunma vlookup kurdum bu alanda bazı değerler bulunamadığı için değer n/a geliyor yapmak istediğim n/a değeri geldi ise yanındaki karşlığı olan "a " hücresindeki değeri "b"hücresine kopyalasın
oldukça araştırdım ancak bulamadım şimdiden teşekkürler.

desteğinizi rica ederim.
teşekkürler
 
örnek olarak,a b,c sütunlarım var c sutunma vlookup kurdum bu alanda bazı değerler bulunamadığı için değer n/a geliyor yapmak istediğim n/a değeri geldi ise yanındaki karşlığı olan "a " hücresindeki değeri "b"hücresine kopyalasın
oldukça araştırdım ancak bulamadım şimdiden teşekkürler.

desteğinizi rica ederim.
teşekkürler

Öncelikle foruma hoş geldiniz .
Vlookup ya da düşeyara ile şarta bağlı bir sonuç gelir. Siz ayrıca bir eğer şartı da istiyorsunuz. Ben bir excel üzerinde anladığımca isteğinizi kurgulayarak uğraştım ama kısır döngü kuruluyor.

Belki siz bir örnek dosya hazırlayıp www.dosya.tc gibi bir dış servera zipleyerek atıp, verilen indirme linkini burada paylaşırsınız. Bu şekilde " ben öyle demedim " türü mesajlar da engellenmiş olur. Bu şekilde cevap gecikecektir.
 
değerlerin a1,b1,c1 ve sizn formülü yazdığınızın da c1 hücresi olduğunu düşünüyorum.
c1 de a1 değerini ararken (c1 de a1 i arıyorum ve eğer bulamazsa a1 i b1 e kopyalıyorum.)


for i = 1 to sonsatır
dim alan as range
set alan = range(cells(i,1),cells(i,3))
deger = application.worksheetfunction.vlookup(cells(i,1),alan,3,false)
if deger = "n/a" then
cells(i,1).select
selection.copy
cells(i,2).select
activesheet.paste
else if
cells(i,3) = deger
end if

next i
 
Öncelikle foruma hoş geldiniz .
Vlookup ya da düşeyara ile şarta bağlı bir sonuç gelir. Siz ayrıca bir eğer şartı da istiyorsunuz. Ben bir excel üzerinde anladığımca isteğinizi kurgulayarak uğraştım ama kısır döngü kuruluyor.

Belki siz bir örnek dosya hazırlayıp www.dosya.tc gibi bir dış servera zipleyerek atıp, verilen indirme linkini burada paylaşırsınız. Bu şekilde " ben öyle demedim " türü mesajlar da engellenmiş olur. Bu şekilde cevap gecikecektir.

Sayın Cems yazdıklarınızda haklısınız tam olarak ne demek istediğimi anlaşılır bir şekilde anlatmak adına , ekdeki exceli ekledim Destek olursanız çok sevinirim.Teşekürler.
 

Ekli dosyalar

1. sorunuz için;

Kod:
Sub Makro1()
    Dim Veri As Range, Son As Long
    
    Son = Cells(Rows.Count, "K").End(3).Row
    
    For Each Veri In Range("K2:K" & Son)
        If Veri.Value = "n/a" Then
            Range("H" & Veri.Row).Copy Range("I" & Veri.Row)
        End If
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

2. Sorunuz için;

"N" sütununa aramak istediğiniz numaraları alt alta yazın.

Kod:
Sub Makro2()
    Dim Veri As Range, Son As Long
    
    Son = Cells(Rows.Count, "K").End(3).Row
    
    For Each Veri In Range("J2:J" & Son)
        If WorksheetFunction.CountIf(Range("N:N"), Veri.Value) > 0 Then
            Range("H" & Veri.Row).Copy Range("I" & Veri.Row)
        End If
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
1. sorunuz için;

Kod:
Sub Makro1()
    Dim Veri As Range, Son As Long
    
    Son = Cells(Rows.Count, "K").End(3).Row
    
    For Each Veri In Range("K2:K" & Son)
        If Veri.Value = "n/a" Then
            Range("H" & Veri.Row).Copy Range("I" & Veri.Row)
        End If
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

2. Sorunuz için;

"N" sütununa aramak istediğiniz numaraları alt alta yazın.

Kod:
Sub Makro2()
    Dim Veri As Range, Son As Long
    
    Son = Cells(Rows.Count, "K").End(3).Row
    
    For Each Veri In Range("J2:J" & Son)
        If WorksheetFunction.CountIf(Range("N:N"), Veri.Value) > 0 Then
            Range("H" & Veri.Row).Copy Range("I" & Veri.Row)
        End If
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub


Çok teşekkürler
 
1. sorunuz için;

Kod:
Sub Makro1()
    Dim Veri As Range, Son As Long
    
    Son = Cells(Rows.Count, "K").End(3).Row
    
    For Each Veri In Range("K2:K" & Son)
        If Veri.Value = "n/a" Then
            Range("H" & Veri.Row).Copy Range("I" & Veri.Row)
        End If
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

2. Sorunuz için;

"N" sütununa aramak istediğiniz numaraları alt alta yazın.

Kod:
Sub Makro2()
    Dim Veri As Range, Son As Long
    
    Son = Cells(Rows.Count, "K").End(3).Row
    
    For Each Veri In Range("J2:J" & Son)
        If WorksheetFunction.CountIf(Range("N:N"), Veri.Value) > 0 Then
            Range("H" & Veri.Row).Copy Range("I" & Veri.Row)
        End If
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

sayın Korhan,
N kolonundu değer arattırmak için bana makro yazmıştınız
hatırlarsanız belki , şu şekilde değişiklik yaplabilirmi aranan değerler var ise I kolonuna gitsin"555" yazsın
teşekkürler,
 
Deneyiniz.

Kod:
Sub Makro2()
    Dim Veri As Range, Son As Long
    
    Son = Cells(Rows.Count, "K").End(3).Row
    
    For Each Veri In Range("J2:J" & Son)
        If WorksheetFunction.CountIf(Range("N:N"), Veri.Value) > 0 Then
            Range("I" & Veri.Row) = 555
        End If
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Deneyiniz.

Kod:
Sub Makro2()
    Dim Veri As Range, Son As Long
    
    Son = Cells(Rows.Count, "K").End(3).Row
    
    For Each Veri In Range("J2:J" & Son)
        If WorksheetFunction.CountIf(Range("N:N"), Veri.Value) > 0 Then
            Range("I" & Veri.Row) = 555
        End If
    Next
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

Korsan bey çok teşekkürler
 
Korsan bey çok teşekkürler

Korhan bey selamlar,
bir konuda tekrar desteğinize ihtiyaç duyuyorum.ekli excelde 2 adet sayfam var
1 sayfamda "personel"ve "ID"adında iki başlığım var
2.sayfamda yine aynı şekilde bu başlıklar mevcut
* iki sayfayı birbiriyle karşılaştırmak istiyorum birinci sayfadaki ıd nin karşısında hangi personel numarası var ise
ikinci sayfaki ıd karşısında o personel numarasının yazmasını istiyorum
desteğinizi rica ederim,
teşekkürler,
 

Ekli dosyalar

2. sayfada A2 hücresine aşağıdaki formülü uygulayıp deneyiniz.

Kod:
=İNDİS(Sheet1!A:A;KAÇINCI(B2;Sheet1!B:B;0))
 

sanırım size hatalı anlattım yazdığınız bu güzel formül malesef işimi çözemedi.
sheet1 sayfasında iki başlığım var "personel" ve "ıd" sheet2 de aynı başlıklar var .
istediğim, sheet1 deki ıd ile sheet 2 deki ıd karşılaştırılması aynı olanları bulursa sheet1 deki personel başlığının altındaki rakamı copy yapıp sheet2 deki personel başlığında karşılığı olan yere yapıştırması. bu sorunu çözersek sayenizde elimde projeyi teslim etmiş olacağım ve yavaş yavaş vba da pişeceğim.
İlginiz için çok teşekkürler Korhan bey.
 
Formül neden işinize yaramadı anlamadım.

Sanırım siz çözümü makro ile istiyorsunuz.

Aşağıdaki kodu deneyiniz.

Kod:
Sub AKTAR()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim Son As Long, X As Long, BUL As Range
    
    Set S1 = Sheets("Sheet1")
    Set S2 = Sheets("Sheet2")
    Son = S1.Cells(S1.Rows.Count, 1).End(3).Row
    
    For X = 2 To Son
        Set BUL = S2.Range("B:B").Find(S1.Cells(X, 2).Value, , , xlWhole)
        If Not BUL Is Nothing Then
            S1.Cells(X, 1).Copy BUL.Offset(0, -1)
        End If
    Next
    
    Set BUL = Nothing
    Set S1 = Nothing
    Set S2 = Nothing
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Formül neden işinize yaramadı anlamadım.

Sanırım siz çözümü makro ile istiyorsunuz.

Aşağıdaki kodu deneyiniz.

Kod:
Sub AKTAR()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim Son As Long, X As Long, BUL As Range
    
    Set S1 = Sheets("Sheet1")
    Set S2 = Sheets("Sheet2")
    Son = S1.Cells(S1.Rows.Count, 1).End(3).Row
    
    For X = 2 To Son
        Set BUL = S2.Range("B:B").Find(S1.Cells(X, 2).Value, , , xlWhole)
        If Not BUL Is Nothing Then
            S1.Cells(X, 1).Copy BUL.Offset(0, -1)
        End If
    Next
    
    Set BUL = Nothing
    Set S1 = Nothing
    Set S2 = Nothing
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

Korhan bey bu konu hakkında son bir şey sormak istiyorum.
yazdığınız makro gerekli değişiklikleri yaptı süper oldu ancak şöyle bir şey farkettim bu makroyu daha geniş başlıklı datalarda denedim tabi makroyu da ona göre uyarladım çalıştırdığımda enteresan şekilde gerekli değişikliği yapıyor bunu görüyorum sonrasında biraz bekliyor ve eski değere geri dönüyor yani önce yapıyor sonrasında yaptığı değişikliği geri alyor nedeni hakkında bilginiz varmıdır? Teşekkürler
 
Sebebi için uyguladığınız veriyi görmek gerekir.
 
Sebebi için uyguladığınız veriyi görmek gerekir.

İlk sayfadan iki adet olduğunu düşünürsek kod2 ile nümerik bilgiler benim hedefim. Yazdığınız kodun aynısını makrodaki sıra numarasını değiştirdim makro çalıştı işlemi yaptı sonrasında yapılan değişikliği geri aldı
 

Ekli dosyalar

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Geri
Üst