Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel Macro: concatenare se valore ripetuto

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

Excel Macro: concatenare se valore ripetuto

Postdi buni75 » 19/05/17 20:35

buonasera,

ho bisogno di creare una macro che peschi in auto i file (txt posizione lunghezza) presenti in una cartella e di accorparli con queste condizioni :

1 - tutti quelli che iniziano con "abc" vanno accorpati e uniti nel foglio A
2 - tutti quelli che iniziano con "def" vanno accorpati e uniti nel foglio B
3 - ciò che inizia con condizioni diverse dai punti 1 e 2, non viene preso in considerazione

a questo punto sistemo il file con la parte di macro che so eseguire.

il risultato, seppur in sintesi, è quello che trovate nel file scaricabile al link https://www.filemail.com/d/qknpfawhymmmoeq dove i valori del foglio A sono presenti anche in B.
nel foglio B, i valori della prima colonna sono ripetuti N volte e accanto ad ognuno sono presenti valori univoci che ho bisogno di concatenare in un'unica cella con separatore virgola.
l'atteso è visibile nel foglio RISULTATO.

grazie dell'aiuto, Buni
buni75
Utente Junior
 
Post: 41
Iscritto il: 24/08/11 20:20

Sponsor
 

Re: Excel Macro: concatenare se valore ripetuto

Postdi Anthony47 » 21/05/17 22:29

Il file di esempio mi ha confuso le poche idee, giacche' non trovo nulla che somigli a abc oppure a def.
In maiuscolo intercalato al tuo testo le cose che non ho capito:
"ho bisogno di creare una macro che peschi in auto i file (txt posizione lunghezza) [COSA SIGNIFICA "TXT POSIZIONE LUNGHEZZA"?] presenti in una cartella e di accorparli con queste condizioni :

1 - tutti quelli ["QUELLI" CHI: I RECORD, I FILE, LE PAROLE?]che iniziano con "abc" vanno accorpati e uniti [CHE SIGNIFICA ACCORPARE E UNIRE?] nel foglio A
2 - tutti quelli che iniziano con "def" vanno accorpati e uniti nel foglio B
3 - ciò che inizia con condizioni diverse dai punti 1 e 2, non viene preso in considerazione
"

Se si tratta di importare un po' di file txt allora ti chiederei di allegarne un numero ragionevole.
Per le istruzioni su come allegare un file:
viewtopic.php?f=26&t=103893&p=605487#p605487

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel Macro: concatenare se valore ripetuto

Postdi buni75 » 22/05/17 08:02

buongiorno Anthony,

cerco di riepilogare con maggiore chiarezza.
la macro si compone di 3 step :

1 - devo dire alla macro di cercare dei file txt nella cartella X. I file che iniziano per ABC (saranno molteplici) dovranno essere presi tutti e uniti nel foglio A del file xls che ho inviato. I file che iniziano per DEF (saranno molteplici) dovranno essere presi tutti e uniti nel foglio B del file xls che ho inviato.
2 - a questo punto intervengo io, con la parte di VBA che so fare e normalizzo i file.
3 - a seguito del punto 2, devo fare un cercavert+concatena che non so fare. ovvero : nel foglio A (colonna A) ho 8 righe con altrettanti valori, nel foglio B ritrovo questi valori ripetuti 70 volte (colonna A) che nella colonna B hanno accanto un valore sempre diverso. il foglio RISULTATO è il raggruppamento del foglio B.

Ciao
buni75
Utente Junior
 
Post: 41
Iscritto il: 24/08/11 20:20

Re: Excel Macro: concatenare se valore ripetuto

Postdi Anthony47 » 22/05/17 21:45

Mi spiace, hai detto cose simili a quelle gia' dette ma senza rispondere alle domande fatte; avessi allegato dei file forse avrei anche capito, ma anche su quel fronte la richiesta e' rimasta inascoltata.

Riformulo i miei dubbi (vedi il Maiuscolo intercalato con il tuo messaggio) alla luce del nuovo scritto:
"1 - devo dire alla macro di cercare dei file txt nella cartella X. I file che iniziano per ABC [PARLI DEL NOME FILE O DEL TESTO DEI FILES?] dovranno essere presi tutti [QUI IMMAGINO CHE PARLI DEL TESTO CONTENUTO NEI FILE, VERO?] e uniti [CHE SIGNIFICA "UNITI"] nel foglio A del file xls che ho inviato. I file che iniziano per DEF (saranno molteplici) dovranno essere presi tutti e uniti nel foglio B del file xls che ho inviato."

Comunque i file txt non servono solo per capire, ma anche per realizzare e testare la macro; quindi...

Ciao!
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel Macro: concatenare se valore ripetuto

Postdi buni75 » 25/05/17 16:14

Buonasera Anthony,

ecco il link per i file.
sono riuscito a smarcare anche il punto 3, quello del concatena + cercavert.
mi rimane aperto il punto 1 : ovvero pescare i file in una certa cartella e, a seconda di come inizia il nome dei file, inserirli nel Foglio A o B della Macro. qui i file allegati sono 2 e saranno sempre a coppia, potrebbero essere parecchi, sempre in numero paro per totale e per naming.
https://fil.email/JeXrV0ew

grazie, buni
buni75
Utente Junior
 
Post: 41
Iscritto il: 24/08/11 20:20

Re: Excel Macro: concatenare se valore ripetuto

Postdi Anthony47 » 25/05/17 22:42

Questa macro consente di scegliere una directory, leggere tutti i ".dat" presenti e accodarli al contenuto di Foglio A o Foglio B secondo le dichiarazioni contenute nelle righe marcate <<<:
Codice: Seleziona tutto
Sub BImport()
Dim aA As String, bB As String, dPath As String, cnA As Long, cnB As Long
Dim dSh As Worksheet, skiF As Boolean, fFile As Long, fS As String
'
aA = "ABC"     '<<< Stringa inizio tipo A
bB = "EFG"     '<<< Stringa inizio tipo B
'
MsgBox ("Scegliere la directory da cui prelevare i DAT da gestire")
With Application.FileDialog(msoFileDialogFolderPicker)
   .Show
    If .SelectedItems.Count = 0 Then
        MsgBox ("Nessuna voce selezionata, il processo viene terminato")
        Exit Sub
    End If
    dPath = .SelectedItems.Item(1) & "\"
End With
myfile = Dir(dPath & "*.dat")
Do
    If myfile = "" Then Exit Do
    DoEvents: skiF = False
    If Left(myfile, Len(aA)) = aA Then
        Set dSh = ThisWorkbook.Sheets("A"): cnA = cnA + 1
    ElseIf Left(myfile, Len(bB)) = bB Then
        Set dSh = ThisWorkbook.Sheets("B"): cnB = cnB + 1
    Else
        skiF = True
    End If
    If Not skiF Then
        fFile = FreeFile
        Open dPath & myfile For Input As #fFile
        While Not EOF(1)
            Line Input #1, fS
            mynext = dSh.Cells(Rows.Count, 1).End(xlUp).Row + 1
            dSh.Cells(mynext, 1).Value = fS
        Wend
        Close fFile
    End If
    myfile = Dir
Loop
MsgBox ("Completato (tipo A: " & cnA & ", tipo B: " & cnB)
End Sub

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 14879
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Excel Macro: concatenare se valore ripetuto":


Chi c’è in linea

Visitano il forum: Nessuno e 28 ospiti