Ottieni testo delimitato da tabulazioni da una colonna specifica in Excel


1

Ho un foglio di calcolo di MS Excel 2013 in cui ho l'elenco di alcune persone che partecipano a una conferenza, il loro indirizzo, numero di telefono ecc. In diverse schede. Ora, mi è stato chiesto di creare un elenco delimitato da schede dei partecipanti per una brochure. C'è un modo che può farlo senza costringermi a riscrivere / copiare e incollare ogni singola riga dei dati dei dati? Ho solo bisogno della colonna del nome. Desidero preparare la brochure su MS Publisher 2013. Qualsiasi aiuto sarà apprezzato.


1
Public Function get_list(rng As Range) As String: Dim str As String, i As Long: i = 1: While Len(rng(i).Value): str = str & ", " & rng(i).Value: i = i + 1: Wend: get_list = Mid(str, 2): End Function: D
Dirk Reichel,

@DirkReichel Per favore, puoi dirmi che lingua è e come implementarlo nel foglio di calcolo?
SinTan1729,

1
Questo è vba ... se vai al modulo vba facendo clic su alt + f11 e quindi inserisci un modulo, puoi semplicemente copiare / incollare il codice lì. Quindi nel tuo foglio di lavoro inserisci =get_list(A:A)(o qualunque sia l'intervallo in cui si trovano i tuoi nomi) e verrà visualizzato un ,elenco separato di tutti i valori di cella nell'intervallo dato (si fermerà alla prima cella vuota) ... scusa, ma ero di fretta e solo per telefono, in questo modo nessuna grande risposta con una spiegazione: P
Dirk Reichel

1
Tuttavia, dovresti cambiare ,in a vbTab. Tuttavia, non puoi impostare le schede in una cella, in questo modo non funzionerebbe come desiderato: P
Dirk Reichel

@DirkReichel Grazie. Non vedo l'ora di imparare VBA.
SinTan1729,

Risposte:


1

Ottieni testo delimitato da tabulazioni da una colonna specifica in Excel

Ho chiesto di creare un elenco delimitato da schede dei partecipanti per un opuscolo. C'è un modo che può farlo senza costringermi a riscrivere / copiare e incollare ogni singola riga dei dati dei dati? Ho solo bisogno della colonna del nome.

Ecco i passaggi per farlo manualmente e rapidamente con Notepad ++ nel caso in cui tu stia cercando un modo manuale per completarlo facilmente senza codice altrimenti; inoltre hai taggato anche la tua domanda text.

  1. Apri il foglio di calcolo Excel con la colonna da cui desideri ottenere i valori dei dati, ad esempio la colonna del nome.

  2. Fare clic su quella colonna per evidenziare tutti i valori, quindi premere Ctrl+ C(o fare clic con il tasto destro e selezionare Copy).

  3. Aprire Notepad ++ e un nuovo nuovo documento vuoto, quindi premere Ctrl+ V(o fare clic con il tasto destro e selezionare Paste) per incollare i valori della colonna appena copiata.

  4. Da Notepad ++ con i valori dei dati incollati premere Ctrl+ Aper selezionare tutto ciò che è stato incollato, salire e selezionare Editselezionare Line Operations, quindi selezionareRemove Empty Lines (Containing Blank characters)

  5. Da Notepad ++ con i valori dei dati ancora tutti evidenziati, vai su e seleziona Editseleziona Blank Operationse poi selezionaTrim Leading and Trailing Space

  6. Da Notepad ++ con i valori dei dati ancora tutti evidenziati, premi Ctrl+ Hvai alla Replacescheda e inserisci i valori e assicurati che le opzioni siano selezionate come mostrato di seguito. Premere l' Replace Allopzione e quella scheda dovrebbe delimitare tutti i valori dei dati.

  7. Da lì è possibile salvare i valori appena formattati come nuovo documento di testo o copiare e incollare in quel formato (delimitato da tabulazioni) nelle altre applicazioni, ecc. Secondo necessità, se applicabile.

Si prega di notare che l'ho provato e confermato che ha funzionato come previsto, quindi ho girato di nuovo e importato in Excel come delimitato da tabulazioni e tutto sembra essere delimitato da tabulazioni e le importazioni sono state eseguite correttamente.


Immagine dello schermo

inserisci qui la descrizione dell'immagine

Fonte: Notepad ++ Espressioni regolari

\ n

  • Il carattere di controllo LF 0x0A (avanzamento riga). Questa è la fine regolare della linea nei sistemi Unix.

\ r

  • Il carattere di controllo CR 0x0D (ritorno a capo). Questo fa parte della sequenza di fine riga DOS / Windows CR-LF ed era il carattere EOL su Mac 9 e precedenti. OSX e versioni successive usano \ n.

\ t

  • Il carattere di controllo TAB 0x09 (scheda o scheda rigida, scheda orizzontale).

Nota aggiuntiva

C'è anche la funzione Ctrl+ Ae Ctrl+ Jdi Notepad ++ ma non aggiungerà la scheda per delimitare ma piuttosto spazi. Non sono sicuro che la tua colonna "nome" sia il nome e il cognome entrambi o solo un nome che potresti potenzialmente fare "spazio" delimitato se necessario e che funzioni nel tuo caso.


Si. Contiene sia il nome che il cognome. E il tuo processo ha funzionato. Anche se per il mio scopo, ho scoperto che l'aggiunta di spazi multipli era meglio delle schede poiché ho bisogno di una spaziatura uniforme. Sto aiutando una ONG ed è stato un lavoro dell'ultimo minuto. Grazie per l'aiuto. Inoltre, noto dei codici nei commenti. Potete per favore dirmi che lingua è quella e come usarla?
SinTan1729,

1
@SayantanSantra Sono contento che ti abbia aiutato a risolvere il tuo problema per le tue necessità immediate. Grazie per la domanda! Il codice nel commento sopra di qualcun altro sembra forse VB o VBA. Non è formattato correttamente perché è in un commento, ma VB da quello che posso dire.
Pimp Juice IT

Si. Grazie. Conosco c ++, ma non VB o VBA. Non vedo l'ora di impararlo.
SinTan1729,

Inoltre "potresti" trasporlo su una riga e quindi salvarlo come delimitato da tabulazionicsv
Dirk Reichel,

1

Presumo che tu abbia una certa conoscenza della programmazione. In questo modo i nomi dati dovrebbero spiegare tutto. (Quindi non spiegherò come funziona il codice.)

Per mostrare un modo corretto di farlo con VBA (e renderlo disponibile ad altre applicazioni) È possibile utilizzare questo script:

Per prima cosa apri la finestra VBA tramite Alt+ F11. Quindi "Inserisci" e "Modulo". Puoi semplicemente copiare / incollare il codice lì

Option Explicit
Sub Put_All_Names_to_Clipboard()
  Dim Name_In_Cell As Variant, Name_List As String
  For Each Name_In_Cell In Selection.Value
    If Len(Name_In_Cell) = 0 Then
      Exit For
    ElseIf Len(Name_List) Then
      Name_List = Name_List & vbTab & Name_In_Cell
    Else
      Name_List = Name_In_Cell
    End If
  Next
  Dim Object_For_Clipboard As Object
  Set Object_For_Clipboard = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
  Object_For_Clipboard.SetText Name_List
  Object_For_Clipboard.PutInClipboard
  Set Object_For_Clipboard = Nothing
End Sub

Ora inserirà un elenco separato da tabulazioni (stringa di testo) di tutti i valori di chiamata che sono selezionati (si ferma alla prima cella vuota, in questo modo sentiti libero di selezionare un'intera colonna). Dopo aver eseguito la macro, puoi semplicemente "incollare" la stringa dove vuoi. Tuttavia, ti suggerisco di incollarlo nel posto giusto direttamente nel tuo file editore, che salva 1 passaggio e mantiene gli appunti puliti per altre attività.

Puoi avviare la macro direttamente tenendo il cursore del testo da qualche parte all'interno del sub e premere F5. È inoltre possibile assegnare la macro a un pulsante o aggiungerla alla barra degli strumenti

Come ultimo suggerimento: puoi anche creare una macro direttamente in MS-Publisher e semplicemente "ottenere" questa stringa dal file excel. Ma è qualcosa che puoi fare in seguito se ti senti meglio con VBA. :)


Si. Ho una certa esperienza. Sono un programmatore c ++ amatoriale. La tua risposta spiega abbastanza bene. Ma, poiché l'altra risposta era più user friendly e utilizzabile per tutti. Ciò mi ha aiutato a svolgere effettivamente il lavoro nell'ora del bisogno. Quindi, l'ho accettato invece. Comunque, grazie per questa grande risposta. Proverò a familiarizzare con VBA nel prossimo futuro.
SinTan1729,

1
@SayantanSantra Non sono qui per ottenere "punti" o qualcosa del genere. La mia missione è aiutare altri ppl a migliorare. E SE sei in grado di migliorare le tue abilità di quanto io abbia ottenuto tutto quello che stavo cercando :)
Dirk Reichel

1
Che proverò ad assicurarmi. 😅
SinTan1729,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.