• DİKKAT

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

Text Dosyadan Veri Süzme (Lookup)

Katılım
8 Ekim 2010
Mesajlar
3
Excel Vers. ve Dili
2007
Herkese Merhabalar,
Forum içinde bazı anahtar kelimelerle aradım ancak istediğim gibi bir sonuç elde edemedim. Bu nedenle daha önce konuşulmuş bir konuyu gönderiyor isem en baştan özür dilerim.

Sorun;
Bir TXT dosyam var ki 10-15MB ve içinde milyonlaarca satır var.
Yapısı aşağıdaki gibi (EKTEKİ Dosyadada görebilirsiniz). Bu dosyayı belli kriterlere göre ayıklamak istiyorum. Ancak, dosya boyutundan dolayı excele import edip yapamıyorum. Parçalamak ve farklı sheetlere böldürmek dosya boyutunu şişiriyor olmuyor.

Yapmak istediğim şey;
Özetle bu dosyayı, TXT dosyada ikinci stündaki (XXXX veya YYYYY)parametreye göre ayıklamak ve bunu istediğim kısımları EXCEL'e almak.

1-Örneğin Excel A1 hücresine YYYYYyazdığımda ve macro çalıştırdığımda dosyayı açıp sırayla XXXX, verilerini ve ona ait 3.cü ve 7.cı stün verileirni excele sırayla kaydetsin.

2-Excele almak yerine daha hızlı olabilecekse eğer direkt TXT dosyalarına outputu XXXX;5;1 (Parametre, 3.Stün, 7.stün) şeklinde ve TXT dosya adları XXXX, YYYY olacak şekilde kaydetsin.

Dosya Yolu "D:\Profiles\CircassAlboras\My Documents"

Yardımlarınız için şimdiden teşekkürler,

Saygılarımla

TXT Dosya Formatı

09:05:04;XXXX;1.53;500;TRT;TRT;0
09:05:04;XXXX;1.53;1000;TRT;TRT;0
09:05:04;XXXX;1.53;10;TRT;TRT;0
09:05:04;XXXX;1.53;6;TRT;TRT;0
09:05:04;YYYYY;3.59;2;TRT;TRT;1
09:05:04;YYYYY;3.59;420;TRT;TRT;1
09:05:04;YYYYY;3.59;578;TRT;TRT;1
09:05:04;YYYYY;3.59;132;TRT;TRT;1
09:05:04;YYYYY;3.59;23;TRT;TRT;1
09:05:04;YYYYY;3.59;67;TRT;TRT;1
09:05:04;YYYYY;3.59;3;TRT;TRT;1
09:05:04;YYYYY;3.59;30;TRT;TRT;1
09:05:04;YYYYY;3.59;220;TRT;TRT;1
09:05:04;YYYYY;3.59;200;TRT;TRT;1
09:05:04;YYYYY;3.59;1;TRT;TRT;1
09:05:04;YYYYY;3.59;1;TRT;TRT;1
09:05:04;YYYYY;3.59;86;TRT;TRT;1

Excel'e alınmak istenen
YYYYY 420 1
YYYYY 578 1
YYYYY 132 1
YYYYY 23 1
YYYYY 67 1
YYYYY 3 1
YYYYY 30 1
YYYYY 220 1
YYYYY 200 1
YYYYY 1 1
YYYYY 1 1
YYYYY 86 1
YYYYY 1000 1
YYYYY 4 1
YYYYY 250 1
YYYYY 1 1
YYYYY 10 1
YYYYY 100 1
YYYYY 440 1
YYYYY 386 1
 

Ekli dosyalar

Bir modül içerisine aşağıdaki kodu yapıştırın. Dosya adını düzenlemeyi unutmayın.
Ayrıca soruda 2, 3 ve 7 kolonlardan veri alsın demişsiniz. Verdiğiniz örneğe göre 2, 4 ve 7 kolonlarından veri almış. Gerekirse isteğinize göre belirttiğim yerlerde düzenleme yapabilirsiniz.

Kod:
Sub Yukle()
    dosyaadi = "C:\xxxx\a.txt"
    AlinacakVeri = Range("A1")
    
    
    ff = FreeFile
    SatirNo = 2 '3. satirdan basla
    Open dosyaadi For Input As ff
    
    Do While Not EOF(ff)
        Line Input #ff, Satir
        Bol = Split(Satir, ";")
        
        If Bol(1) = AlinacakVeri Then
            SatirNo = SatirNo + 1
            Range("A" & SatirNo) = Bol(1) '2.kolon
            Range("B" & SatirNo) = Bol(3) '4.kolon
            Range("C" & SatirNo) = Bol(6) '7.kolon
        End If
    Loop
    Close #ff
End Sub
 
Sn Revelte,
Cevabınız için teşekkür ederim, mükemmel çalışıyor,
Ellerinize ve emeklerinize sağlık.
Çok teşekkür ederim.
İyi çalışmalar
Cİrcass..
 
Merhaba.
Yukarıdaki kodda dosya adını, sayfada herhangi bir hücreden aldırabilir miyiz?
Aramayı sayı olduğunda yapmıyor.Bunu yapabilir miyiz?
Teşekkürler...
 
Son düzenleme:
Yardımcı olabilecek arkadaş var mı?
 
Merhaba,

Sn. rewelte'nin önerdiği kodu aşağıdaki şekilde değiştirin.

Kod:
Sub Yukle()
    dosyaadi = "C:\xxxx\" [COLOR=red]& Sheets("Sayfa1").Range("B1")[/COLOR]
    AlinacakVeri = [COLOR=red]CStr(Range("A1"))[/COLOR]    
    
    ff = FreeFile
    SatirNo = 2 '3. satirdan basla
    Open dosyaadi For Input As ff
    
    Do While Not EOF(ff)
        Line Input #ff, Satir
        Bol = Split(Satir, ";")
        
        If Bol(1) = AlinacakVeri Then
            SatirNo = SatirNo + 1
            Range("A" & SatirNo) = Bol(1) '2.kolon
            Range("B" & SatirNo) = Bol(3) '4.kolon
            Range("C" & SatirNo) = Bol(6) '7.kolon
        End If
    Loop
    Close #ff
End Sub
 
Merhaba.
Txt dosyasında veri fazla olduğunda kodun;
If Bol(1) = AlinacakVeri Then kısmında
Run-time error '9':
Subscript out of range
hatasını veriyor.Problemi bir türlü çözemedim.Yardımcı olabilir misiniz?
Teşekkürler...
 
Merhaba,

"Bol" değişkeni noktalı virgülle ayrılmış verilere göre hareket ediyor. Txt dosyanızda noktalı virgül içermeyen bir satır varsa bu hata vermesine sebep olmuştur. Bunu kontrol ediniz.
 
Korhan bey,tekrar teşekkürler...
 
Geri
Üst