Obter texto delimitado por tabulação de uma coluna específica no Excel

1

Eu tenho uma planilha do MS Excel 2013 na qual tenho a lista de algumas pessoas que participam de uma conferência, seu endereço, número de telefone etc. em diferentes guias. Agora, fui convidado a criar uma lista delimitada por tabulação dos participantes de um folheto. Existe uma maneira de fazer isso sem me forçar a redigitar / copiar e colar todas as linhas dos dados? Eu só preciso da coluna de nome. Desejo preparar o folheto no MS Publisher 2013. Qualquer ajuda será apreciada.

SinTan1729
fonte
11
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 02/01
@DirkReichel Você pode me dizer que idioma é esse e como implementá-lo na planilha?
precisa saber é o seguinte
11
Isto é vba ... se você for ao módulo vba clicando em alt + f11 e depois inserir um módulo, poderá simplesmente copiar / colar o código lá. Em seguida, insira a planilha =get_list(A:A)(ou qualquer intervalo em que seus nomes estejam) e ele produzirá uma ,lista separada de todos os valores de células no intervalo especificado (parará na primeira célula vazia) ... desculpe, mas eu estava com pressa e apenas por telefone, desta forma, não há grande resposta com uma explicação: P
Dirk Reichel
11
Ainda assim, você precisaria mudar ,para a vbTab. No entanto, você não pode definir tabulações em uma célula, desta forma ele não iria funcionar como desejado: P
Dirk Reichel
@DirkReichel Thanks. Estou ansioso para aprender VBA.
precisa saber é o seguinte

Respostas:

1

Obter texto delimitado por tabulação de uma coluna específica no Excel

Pedi para criar uma lista delimitada por tabulação dos participantes de um folheto. Existe uma maneira de fazer isso sem me forçar a redigitar / copiar e colar todas as linhas dos dados? Eu só preciso da coluna de nome.

Aqui estão as etapas para fazer isso de maneira manual e rápida com o Notepad ++ , caso você esteja procurando uma maneira manual de concluir isso facilmente sem código; além disso, você também tem sua pergunta marcada text.

  1. Abra sua planilha do Excel com a coluna da qual você deseja obter os valores dos dados, como a coluna de nome.

  2. Clique nessa coluna para destacar todos os valores e pressione Ctrl+ C(ou clique com o botão direito e selecione Copy).

  3. Abra o Notepad ++ e um novo documento em branco e, em seguida, pressione Ctrl+ V(ou clique com o botão direito do mouse e selecione Paste) para colar os valores da coluna que você acabou de copiar.

  4. No Notepad ++ com os valores de dados colados, pressione Ctrl+ Apara selecionar tudo que você colou, vá para cima e selecione Editselecionar Line Operationse, em seguida, selecioneRemove Empty Lines (Containing Blank characters)

  5. No Notepad ++, com os valores de dados ainda todos destacados, vá para cima e selecione Editselecionar Blank Operationse, em seguida, selecioneTrim Leading and Trailing Space

  6. No Notepad ++ com os valores dos dados ainda todos destacados, pressione Ctrl+ Hvá para a Replaceguia, insira os valores e verifique se as opções estão selecionadas da maneira mostrada abaixo. Pressione a Replace Allopção e essa guia deve delimitar todos os seus valores de dados.

  7. A partir daí, você pode salvar os valores recém-formatados como um novo documento de texto ou copiar e colar nesse formatott (delimitado por tabulações) em outros aplicativos, etc., conforme necessário, se aplicável.

Observe que eu testei isso e confirmei que funcionava conforme o esperado, depois voltei e importei-o para o Excel como delimitado por tabulação e tudo parece estar delimitado por tabulação e importa corretamente.


Captura de tela

insira a descrição da imagem aqui

Fonte: Expressões regulares do Notepad ++

\ n

  • O caractere de controle LF 0x0A (avanço de linha). Este é o fim de linha comum nos sistemas Unix.

\ r

  • O caractere de controle CR 0x0D (retorno de carro). Isso faz parte da sequência de fim de linha DOS / Windows CR-LF e era o caractere EOL no Mac 9 e versões anteriores. OSX e versões posteriores usam \ n.

\ t

  • O caractere de controle TAB 0x09 (guia ou guia rígido, guia horizontal).

Nota adicional

Há também o Ctrl+ Ae Ctrl+ Jcaracterística do Notepad ++, mas não vai adicionar a guia para delimitar mas sim espaços. Não tenho certeza se sua coluna "nome" é o nome e o sobrenome de ambos ou apenas um nome, o qual você poderia potencialmente delimitar "espaço" se necessário e que funcione no seu caso.

Pimp Juice IT
fonte
Sim. Ele contém o nome e o sobrenome. E seu processo funcionou. Embora para o meu propósito, eu achei que adicionar vários espaços fosse melhor do que tabulações, pois preciso de espaçamento uniforme. Estou ajudando uma ONG e foi um trabalho de última hora. Obrigado pela ajuda. Além disso, noto algum código nos comentários. Você pode me dizer que idioma é esse e como usá-lo?
precisa saber é o seguinte
11
@SayantanSantra Estou feliz que ajudou a resolver seu problema para sua necessidade imediata. Obrigado pela pergunta! O código no comentário acima de outra pessoa parece ser VB ou VBA, talvez. Não está formatado corretamente porque está em um comentário, mas em VB pelo que posso dizer.
Pimp Juice IT
Sim. Obrigado. Eu sei c ++, mas não VB ou VBA. Estou ansioso para aprender.
precisa saber é o seguinte
Você também "poderia" transpô-la para uma linha e, em seguida, salvar como delimetered-guiacsv
Dirk Reichel
1

Presumo que você tenha algum conhecimento em programação. Dessa forma, os nomes dados devem explicar tudo. (Portanto, não vou explicar como o código funciona.)

Para mostrar uma maneira adequada de fazer isso com o VBA (e disponibilizá-lo para outros aplicativos), você pode usar este script:

Primeiro abra a janela do VBA via Alt+ F11. Em seguida, "Inserir" e "Módulo". Você pode simplesmente copiar / colar o código 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

Agora, ele coloca uma lista separada por tabulação (sequência de texto) de todos os valores de chamada selecionados (para na primeira célula vazia, dessa forma, sinta-se à vontade para selecionar uma coluna inteira). Depois que a macro é executada, você pode simplesmente "colar" a string onde quiser. No entanto, sugiro colá-lo no local certo diretamente no arquivo do editor, o que salva uma etapa e também mantém a área de transferência limpa para outras tarefas.

Você pode iniciar a macro diretamente, mantendo o cursor de texto em algum lugar dentro do sub e pressionado F5. Você também pode atribuir a macro a um botão ou adicioná-la à barra de ferramentas

Como última dica: você também pode criar uma macro diretamente no MS-Publisher e apenas "obter" essa sequência do arquivo excel. Mas isso é algo que você pode fazer mais tarde se se sentir melhor com o VBA. :)

Dirk Reichel
fonte
Sim. Eu tenho alguma experiência. Eu sou um programador amador de c ++. Sua resposta explica muito bem. Mas, como a outra resposta foi mais amigável e utilizável para todos. Isso me ajudou a realmente fazer o trabalho na hora da necessidade. Então, eu aceitei isso. De qualquer forma, obrigado por esta ótima resposta. Vou tentar me familiarizar com o VBA no futuro próximo.
precisa saber é o seguinte
11
@SayantanSantra Não estou aqui para conseguir "pontos" ou algo assim. Minha missão é ajudar outras pessoas a melhorar. E se você é capaz de melhorar suas habilidades do que eu tenho tudo o que eu estava procurando :)
Dirk Reichel
11
Que eu vou tentar ter certeza. Sin
SinTan1729 3/16/16