Condividi:        

[Excel] estrarre stringa specifica

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: [Excel] estrarre stringa specifica

Postdi mirmidone21 » 24/11/15 15:17

ciao anthony,
la macro funge, ma c'è un problema sul foglio e nella colonna filtrata, ricopia sempre la stessa stringa, cioè quella della prima riga.
ho controllato anche col file scaricato da dropbox, fa la stessa cosa.
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Sponsor
 

Re: [Excel] estrarre stringa specifica

Postdi Anthony47 » 24/11/15 15:38

Grrrr....
Ci casco sempre:
non Sheets(OutSh).Cells(Rows.Count, OutCol).End(xlUp).Offset(1, 0).Resize(NextOut, 1).Value = OuArr ma
Codice: Seleziona tutto
Sheets(OutSh).Cells(Rows.Count, OutCol).End(xlUp).Offset(1, 0).Resize(NextOut, 1).Value = Application.WorksheetFunction.Transpose(OuArr)
(In DUE posti)

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] estrarre stringa specifica

Postdi mirmidone21 » 24/11/15 15:46

che grandezza!!!!!!!
troppo bello.
una Hola e un grazie, alla prossima che sicuramente non mancherà
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: [Excel] estrarre stringa specifica

Postdi Anthony47 » 24/11/15 15:55

Non hai mai confermato se sul tuo Pc 19mila righe vengono elaborate in 0.13 secondi.

una Hola e un grazie, alla prossima che sicuramente non mancherà
Aspettiamo con impazienza :D :D
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] estrarre stringa specifica

Postdi mirmidone21 » 24/11/15 16:36

ho processato circa 700.000 righe in 1.17 sec, com'è buono? :)
se volete posto uno screnshoot
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: [Excel] estrarre stringa specifica

Postdi mirmidone21 » 25/11/15 14:11

rieccomi subito a voi, come vi avevo promesso.
vado subito alla questione:
possiamo fare in modo che dopo che ha estratto la stringa, mi riporti sul foglioz non solo la colonna estratta, ma anche le altre. in modo da ricreare la struttura completa del file?
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: [Excel] estrarre stringa specifica

Postdi bismark » 25/11/15 16:17

buona sera

gentilmente mi potete aiutare a capire cosa c'è di errato nel file allegato, perché ne foglioZ non copia nessun dato

http://www.filedropper.com/esperimento

grazie
bismark
Utente Junior
 
Post: 54
Iscritto il: 08/07/15 15:03

Re: [Excel] estrarre stringa specifica

Postdi Anthony47 » 26/11/15 01:24

Dalla tua macro:
Codice: Seleziona tutto
StrSh = "Foglio1"           '<<< Il foglio con l'elenco di partenza
StrCol = "A"                '<<< La colonna dell'elenco di partenza
OutSh = "FoglioZ"           '<<< Il foglio dove si crea l'elenco filtrato
OutCol = "B"                '<<< La colonna dell'elenco filtrato
Ho cercato e cercato, ma nella colonna A di Foglio1 non ho trovato nessuna stringa presente nell' elenco Array("Y1", "YC1", "YM1").
Forse volevi indicare StrCol = "C" ...

Ciao!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] estrarre stringa specifica

Postdi Anthony47 » 26/11/15 01:26

Per poter copiare tutta la riga modifichiamo la macro, che diventa
Codice: Seleziona tutto
Sub Filtra44()
'Rem: Filtra su una colonna, copia un range di colonne
Dim OutSh As String, StrSh As String, YesStr, NoStr, LastA As Long, J As Long, myTim As Double
Dim I As Long, cFound As Long, CRowV As String, YesOk As Boolean, NoNOk As Boolean, NCols As Long
Dim NextOut As Long, OuArr(), StrCol As String, OutCol As String, K As Long
'
StrSh = "Foglio1"           '<<< Il foglio con l'elenco di partenza
StrCol = "B"                '<<< La colonna dell'elenco di partenza
OutSh = "FoglioZ"           '<<< Il foglio dove si crea l'elenco filtrato
OutCol = "A:D"              '<<< Le colonne che saranno riportate nell'elenco filtrato
'
YesStr = Array("Y1", "YC1", "YM1")
NoStr = Array("YY", "DY", "CY", "EY", "AY", "RY", "OY")
LastA = Cells(Rows.Count, StrCol).End(xlUp).Row
myTim = Timer
Sheets(StrSh).Select
Sheets(OutSh).Range(OutCol).ClearContents
NCols = Range(OutCol).Columns.Count
ReDim OuArr(1 To 10000, 1 To NCols)
For I = 2 To LastA
    YesOk = False: NoNOk = False
    CRowV = Cells(I, StrCol).Value
    For J = LBound(YesStr, 1) To UBound(YesStr, 1)
        cFound = InStr(1, CRowV, YesStr(J), vbTextCompare)
        If cFound > 0 Then YesOk = True: Exit For
    Next J
    If YesOk Then
        For J = LBound(NoStr, 1) To UBound(NoStr, 1)
            cFound = InStr(1, CRowV, NoStr(J), vbTextCompare)
            If cFound > 0 Then NoNOk = True: Exit For
        Next J
        If YesOk And Not NoNOk Then
            NextOut = NextOut + 1
            For K = 1 To NCols
                OuArr(NextOut, K) = Cells(I, K).Value
            Next K
'            OuArr(NextOut) = CRowV
            If NextOut >= 10000 Then
                  Sheets(OutSh).Cells(Rows.Count, Range(OutCol).Range("A1").Column).End(xlUp).Offset(1, 0).Resize(NextOut, NCols).Value = OuArr
                NextOut = 0
            End If
        End If
    End If
Next I
If NextOut > 0 Then
    Sheets(OutSh).Cells(Rows.Count, Range(OutCol).Range("A1").Column).End(xlUp).Offset(1, 0).Resize(NextOut, NCols).Value = OuArr
    NextOut = 0
End If
MsgBox ("Completato in Sec. " & Format(Timer - myTim, "0.00") & vbCrLf & _
    "Processate " & LastA & " linee su foglio " & StrSh & vbCrLf & _
    "Create " & Sheets(OutSh).Cells(Rows.Count, Range(OutCol).Range("A1").Column).End(xlUp).Row & " linee su " & OutSh)
End Sub
Ci sono poche ma significative differenze con la versione filtra33. Anche in questo caso le istruzioni marcate <<< vanno personalizzate come da commenti (vale anche per bismark, eh eh):
Codice: Seleziona tutto
StrSh = "Foglio1"           '<<< Il foglio con l'elenco di partenza
StrCol = "B"                '<<< La colonna dell'elenco di partenza
OutSh = "FoglioZ"           '<<< Il foglio dove si crea l'elenco filtrato
OutCol = "A:D"              '<<< Le colonne che saranno riportate nell'elenco filtrato  !!!

Il file pubblicato su Dropbox e' ora aggiornato e include la Sub Filtra44.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] estrarre stringa specifica

Postdi mirmidone21 » 26/11/15 10:23

grazie Anthony, perfetto
ho imparato + da te che da tutti i video x macro VB che ho visto su youtube.
Windows 7 sp1 -- Office 2013
Intel i5 4430 -- 3.00 ghz ---- 4gb RAM
mirmidone21
Utente Senior
 
Post: 149
Iscritto il: 26/10/15 16:48

Re: [Excel] estrarre stringa specifica

Postdi bismark » 26/11/15 10:38

Ringrazio anch'io e vado a studiare

alla prossima

:)
bismark
Utente Junior
 
Post: 54
Iscritto il: 08/07/15 15:03

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] estrarre stringa specifica":


Chi c’è in linea

Visitano il forum: Nessuno e 73 ospiti