import csv -- conditionat de nume regasit in coloana

Avatar utilizator
cristi_lazarro
Mesaje: 841
Membru din: Mie Noi 04, 2009 5:57 pm

Re: import csv -- conditionat de nume regasit in coloana

Mesaj de cristi_lazarro » Lun Noi 30, 2009 8:10 pm

ms ;)

inca nu am facut acea modificare, mai sunt "legat" putin intr-o alta parte a aceluiasi "proiect"

..revin..

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: import csv -- conditionat de nume regasit in coloana

Mesaj de Dr.Windows » Lun Noi 30, 2009 11:22 pm

Si ca sa fie mai "detaliat"... ;) ... o idee ar fi urmatoarea (ca sa nu modifici functia de import foarte mult): Poti "impacheta" zona de "'Scriere a continutului in foaia destinatie" intr-un IF care apeleaza o functie de "verificare a conditiilor tale"...

Mai exact in loc de bucata asta de cod din functie

Cod: Selectaţi tot

        'Scrie continutul in foaia destinatie
        For ColIdx = 0 To nCols
            ThisWorkbook.Worksheets(cWSDst).Cells(RowIdx, ColIdx + 1).Value = arrContent(ColIdx)
        Next ColIdx
vei avea:

Cod: Selectaţi tot

        If My_Filter_Function(cReadLine) = True Then
            'Scrie continutul in foaia destinatie
            For ColIdx = 0 To nCols
                ThisWorkbook.Worksheets(cWSDst).Cells(RowIdx, ColIdx + 1).Value = arrContent(ColIdx)
            Next ColIdx
        End If
Acum doar trebuie sa "inventezi functia ta My_Filter_Function care sa intoarca TRUE daca se indeplineste conditia sau FALSE in caz contrar...

O astfel de functie ar putea fi urmatoarea (folosind sugestia lui smcsa cu functia InStr):

Cod: Selectaţi tot

Function My_Filter_Function(cText)
    Dim nResult As Long
    lnResult = InStr(1, cText, "BST")
    If lnResult > 0 Then
        My_Filter_Function = True
    Else
        My_Filter_Function = True
    End If
End Function
Astfel daca se va fasi valoarea BST in sirul trimis (toata linia de importat) functia va intoarce TRUE si astfel randul se va importa.

Daca in schimb vrei sa faci verificarea pe o anumita coloana in loc sa trimiti tot sirul ca paramentru (cReadLine), poti trimite doar coloana care te intereseaza arrContent(nCol) unde nCol este coloana care te intereseaza...

Bafta!... ;)

smcsa
Mesaje: 2805
Membru din: Mar Sep 29, 2009 7:29 pm
Localitate: Timisoara

Re: import csv -- conditionat de nume regasit in coloana

Mesaj de smcsa » Mar Dec 01, 2009 10:19 am

lucian scrie: Astfel daca se va fasi valoarea BST in sirul trimis (toata linia de importat) functia va intoarce TRUE si astfel randul se va importa.

Daca in schimb vrei sa faci verificarea pe o anumita coloana in loc sa trimiti tot sirul ca paramentru (cReadLine), poti trimite doar coloana care te intereseaza arrContent(nCol) unde nCol este coloana care te intereseaza...

Bafta!... ;)
Cred ca ar trebui sa testeze doar pe prima coloana, nu pe toata linia, pentru ca RO are si pe coloana 3

Închis

Înapoi la “Visual Basic for Application (VBA) cu Excel - Intrebari tehnice”