Reformatar dados no excel

1

Esta é uma questão complexa com várias etapas.

Eu tenho um cliente com informações que precisam ser importadas para o Salesforce como uma nota.

Eles são relativamente abertos sobre como isso é formatado. Contanto que a informação esteja lá e acessível a uma conta específica, ela ficará feliz.

A importação do Salesforce para notas exige que a nota esteja em uma coluna. O problema com isso é que existem literalmente cerca de 3.000 linhas de notas diferentes em um arquivo de notas separado do arquivo principal do Excel. Cada uma dessas linhas de notas é organizada no seguinte formato:

ABC Company
Called ABC Company
Had a meeting with ABC Company's Dave at lunch on Friday
Did XYZ with ABC Company


DEF Incorporated
Met DEC Executive while golfing
Sold 30 widgets to DEC yesterday

Basicamente, nome da empresa, seguido por um número variável de linhas relacionadas a essa empresa, seguido por duas linhas de espaço em branco, seguidas por outra empresa, etc, etc., até o final do arquivo.

Então eu preciso:

Crie uma coluna separada para cada linha após a primeira dentro de um grupo, ou seja, da seguinte maneira:

Called ABC Company | Had a meeting with ABC Company's Dave at lunch on Friday | Did XYZ with ABC Company


Met DEC Executive while golfing | Sold 30 widgets to DEC yesterday

E combine aqueles com a coluna no primeiro arquivo do Excel, com base na primeira linha do grupo.

Ou eu tenho que descobrir outra maneira de fazer isso que seja mais eficiente.

    
por Andrew Alexander 13.06.2013 / 14:49

3 respostas

1

Isso é confuso (por exemplo, "Cada uma dessas linhas de notas é organizada no seguinte formato:", no entanto, o exemplo parece um nome colunar e de empresa ausente da segunda parte do último exemplo), com adivinhação:

  1. Copiar dados e colar no Word como não formatados.
  2. Selecione todos e substitua ^ p ^ p por algo diferente (zzz?)
  3. Substitua ^ p por ^ t.
  4. Substituir zzz ^ t por ^ p
  5. Reimporte para o Excel.
por 13.06.2013 / 15:30
0

O truque será garantir que os dados sejam realmente regulares. Se cada registro é exatamente 4 linhas separadas por algumas linhas em branco, então você é de ouro, se o número de linhas varia, você pode ter que ajustar os passos abaixo. Enquanto eu normalmente entrava e escrevia uma macro, é possível reformatar esses dados usando apenas fórmulas regulares no Excel.

Etapa 1.
Insira uma nova coluna à esquerda de todos os seus dados e uma linha em branco acima dos seus dados (ou seja, seus dados agora começam em B2 e a coluna A está em branco)

Passo 2. Marque o início de cada registro usando uma fórmula. Em A2, insira a seguinte fórmula. Use a função de preenchimento para copiar essa fórmula na planilha inteira

=IF(AND(ISBLANK(B1)*NOT(ISBLANK(B2))),"START","")

Seus dados agora são assim:

START   ABC Company
        Called ABC Company
        Had a meeting with ABC Company's Dave at lunch on Friday
        Did XYZ with ABC Company


START   DEF Incorporated
        Met DEC Executive while golfing
        Sold 30 widgets to DEC yesterday

Passo 3. Agora podemos escrever uma fórmula para combinar tudo na coluna C (ou mais à direita)

=IF(A2="START",CONCATENATE(B2,"|",B3,"|",B4,"|",B5),"")

Sua coluna C terminará como:

ABC Company|Called ABC Company|Had a meeting with ABC Company's Dave at lunch on Friday|Did XYZ with ABC Company





DEF Incorporated|Met DEC Executive while golfing|Sold 30 widgets to DEC yesterday|

Etapa 4. Selecione Todos, Copiar, Colar especial - somente valores

Etapa 5. Classifique a coluna C de modo que as linhas em branco caiam para a parte inferior, copie e cole em um arquivo de texto e será bom colocá-lo no Salesforce.

    
por 13.06.2013 / 15:35
0

E há sempre a opção macro. O que se segue assume 1) que os seus dados estão todos na coluna 1 e 2) que cada uma das suas empresas está separada por uma linha em branco. Sinta-se à vontade para comentar com ajustes que precisam ser feitos.

Você pode desejar criar uma cópia de sua planilha antes de executá-la.

Sub Repackage()

    Dim lRow As Long
    Dim lDropRow As Long
    Const iCol = 1

    lDropRow = 1
    lRow = 2
    Do

        ' Check for blank entry - indicates new company
        If Cells(lRow, iCol) = "" Then

            lDropRow = lRow
            Rows(lRow).Delete

            lRow = lRow + 1

        Else

            ' Note confirmed - aggregate notes into single line
            Do
                Cells(lDropRow, 256).End(xlToLeft).Offset(0, 1) = Trim(Cells(lRow, iCol))
                Rows(lRow).Delete
            Loop Until Cells(lRow, iCol) = ""

        End If

    Loop Until lRow > Cells(65536, iCol).End(xlUp).Row

End Sub
    
por 13.06.2013 / 17:58