Excel Dividir e Inserir Células Inteligentemente

3

Estou trabalhando em um projeto pessoal, um simples web scraper. Eu tenho meus resultados armazenados como um arquivo CSV com título, URL e ID. ID contém strings de resultados encontrados através de correspondência regex (ex: Uma célula ID poderia ser "1234567", "1111111 2222222", etc.) A divisão de células em colunas é trivial, mas como posso dividir facilmente esses IDs mantendo links para o relevante Título e URL? Eu estou trabalhando com algumas milhares de páginas, então ir à mão não é uma boa opção.

Exemplo:

Inicial:
"Página inicial", foo.bar/home, 1111111 2222222

Depois:
"Página inicial", foo.bar/home, 1111111
"Página inicial", foo.bar/home, 2222222

    
por Steven R 12.04.2017 / 22:58

2 respostas

1

Algo assim em vba deve fazer o truque. Isso não tem verificação de erros e não é otimizado para velocidade, mas deve ser bom para isso. Ele criará uma nova planilha e dividirá os dados da maneira que você quiser.

Option Explicit
Sub test()
Dim lRow As Long, curRow As Long, pasteRow As Long
Dim dataWS As Worksheet, pasteWS As Worksheet
Dim ArrID() As String
Dim i As Long

'Since csv will only have one sheet
Set dataWS = Sheets(1)
Set pasteWS = Worksheets.Add
pasteRow = 1

lRow = dataWS.Range("A" & dataWS.Rows.Count).End(xlUp).Row

For curRow = 1 To lRow
    ArrID() = Split(dataWS.Range("C" & curRow).Value, " ")
    For i = 0 To UBound(ArrID)
        If Len(ArrID(i)) > 0 Then
            pasteWS.Range("A" & pasteRow & ":B" & pasteRow).Value = dataWS.Range("A" & curRow & ":B" & curRow).Value
            pasteWS.Range("C" & pasteRow).Value = ArrID(i)
            pasteRow = pasteRow + 1
        End If
    Next
Next

End Sub
    
por 12.04.2017 / 23:45
0

Não é o mais elegante:

  1. dividido em colunas. Eu usei texto para delimitadores de coluna, espaço e vírgula, tratando delimitadores consecutivos como um.
  2. Jogar na tabela dinâmica
  3. Adicione título, URL e ID1 às linhas.
  4. Vá para as configurações de campo de cada campo, desative os subtotais. Na guia "Layout e impressão", mostre itens no formulário tabular e repita rótulos de item.
  5. Copie os dados para uma nova planilha.
  6. Troque ID1 por ID2 nas linhas da tabela dinâmica. Copie para a nova folha.

    
por 13.04.2017 / 07:08