Simples (espero) Excel questão sobre

0

Estou fazendo um diretório para o meu bairro. Nós tínhamos a maioria das informações de um diretório anterior. As informações foram digitadas: nome A1, endereço B1 e número de telefone C1; B1 nome, endereço B2, número de telefone C2, etc. O editor deseja as informações em um formato diferente: nome A1, endereço A2, número de telefone A3, espaço em branco A4; Nome A5, endereço A6, número de telefone A7, A8 em branco, etc ... Existe uma maneira fácil (ou não tão fácil) de fazer com que o Excel mude o formato das informações sem que eu tenha que entregar informações do tipo 1300 domicílios? / p>

Também precisarei reformatar as informações uma segunda vez em um entrecruzamento. O formato para esse é: nome da rua A1, número do endereço A2, nome do residente B2 e número de telefone C2.

    
por Troggy 03.12.2009 / 18:10

5 respostas

2

O Excel tem um recurso para fazer isso, por exemplo mover de A1 A2 A3 para A1 B1 C1. Selecione os dados em questão, copie-os e vá para a área onde deseja passar. Então não basta colar, mas passar de "passado especial" (ou colar o conteúdo ou o que ele disser, em alemão ele diz "inhalte einfügen" ;-)). A próxima caixa de diálogo tem um garoto de verificação de transposição que o ajudará a alcançar sua solução.

    
por 03.12.2009 / 19:15
2

Adicione essa macro ao seu excel e execute 'MyTranspose' quando a planilha que contém seus dados de endereço estiver selecionada.

Option Explicit

'Copy all the data from the active sheet into a  new worksheet
' and transpose all the columns into a single column
Sub MyTranspose()
    Dim r As Range
    Dim wsNew As Worksheet
    Dim wsCurrent As Worksheet

    Set wsCurrent = ActiveSheet
    Set wsNew = Worksheets.Add(Before:=Sheets(1))

    For Each r In wsCurrent.UsedRange.Rows
        r.Copy
        wsNew.Cells(LastRowOnWS(wsNew, 1) + 2, 1).PasteSpecial Transpose:=True
    Next r

    Application.CutCopyMode = False
    Set wsCurrent = Nothing
    Set wsNew = Nothing
End Sub

'Find the last row used in column 'col'
Function LastRowOnWS(ByVal ws As Worksheet, _
                     Optional ByVal col As Long = 1) As Long
    LastRowOnWS = ws.Cells(65536, col).End(xlUp).Row
End Function
    
por 03.12.2009 / 21:37
1

O primeiro deles - convertendo uma tabela de dados em uma única coluna com linhas em branco separando cada registro - eu realmente faria no Word. Copiar & cole os dados no Word, converta tabela em texto usando Tab como o separador de colunas, substitua cada marca de parágrafo existente por duas marcas de parágrafo (^ p com ^ p ^ p), substitua cada guia por uma marca de parágrafo (^ t com ^ p) , e copie e cole o resultado de volta no Excel.

Para a segunda tarefa, se os endereços forem formatados da maneira usual nos EUA - 123 Main Street -, você precisará usar as funções de manipulação de texto do Excel para dividir o número do endereço do nome da rua. Se os endereços estiverem na coluna B (e sempre houver um único espaço separando o número da rua), então, em D1, coloque

=Trim(Left(B1,Find(" ",B2)))

e em E1, coloque

=Trim(Right(B1,Len(B1)-Len(D1)))

e preencha. Em seguida, como antes, use o Word para substituir estrategicamente as guias por marcas de parágrafo para obter a organização necessária.

Se é estúpido, mas funciona, não é idiota. :)

    
por 03.12.2009 / 20:48
0

A manipulação da ferramenta de concatenação do Excel deve ajudar

link

    
por 03.12.2009 / 18:15
0

Essa pergunta é melhor no link , mas desde que você perguntou no SO, que é um site de discussão de programação ...

Eu definitivamente faria o seguinte:

  1. Exportar os dados para um arquivo .csv
  2. Manipule o arquivo .csv com uma linguagem de programação poderosa como o Python
  3. Importe o novo arquivo .csv de volta para o excel

Aprender essas ferramentas pode ser vantajoso para todos, não apenas para programadores!

    
por 03.12.2009 / 18:18