Extrai itens de uma célula enorme no Excel

3

Eu tenho uma enorme planilha de PC e o software que está instalado neles. Infelizmente, o relatório lista todo o software instalado para um PC em uma célula.

Eu preciso de uma fórmula ou macro que passe por todos os softwares da célula e extraia todo o software que contém a palavra Microsoft e coloque-a em uma nova célula na próxima coluna no mesmo linha. Ele deve fazer isso para cada item encontrado, de modo que cada produto Microsoft instalado apareça em células separadas na linha 1.

Eu tentei várias coisas, mas não tenho certeza de como obtê-lo para produzir todas as instâncias. Eu estou supondo que precisa de algum tipo de matriz e loop, mas não teria a menor idéia de como fazer isso.

Se alguma informação adicional for necessária, por favor me avise.
Sua ajuda seria muito apreciada.

A célula do software é assim:

"Adobe Flash Player 10 Plugin | 10.3.181.26"; "Adobe Flash Player 11 ActiveX 64-bit | 11.0.1.152"; "Adobe Reader 9.4.6 | 9.4.6"; "Altiris Deployment Agent | 1.0.0"; "BigFix Enterprise Client | 7.2.5.22"; "Citrix Access Gateway Plugin | 4.6.1.2700"; "Citrix Password Manager Plugin | 4.6.264.0"; "Citrix XenApp Web Plugin | 11.0.0.5357"; "Definition update for Microsoft Office 2010 (KB982726)"; "Intel(R) Graphics Media Accelerator Driver"; "JXplorer | 3.2.2"; "Java(TM) 6 Update 16 | 6.0.160"; "McAfee Agent | 4.5.0.1852"; "McAfee AntiSpyware Enterprise Module | 8.7.0.129"; "McAfee Encrypted USB Client | 1.5.0"; "McAfee VirusScan Enterprise | 8.7.0"; "Microsoft .NET Framework 4 Client Profile | 4.0.30319"; "Microsoft Application Virtualization Desktop Client | 4.6.0.1523"; "Microsoft Conferencing Add-in for Microsoft Office Outlook | 8.0.6362.187"; "Microsoft Office Communicator 2007 | 2.0.6362.189"; "Microsoft Office InfoPath MUI (English) 2010 | 14.0.4763.1000"; "Microsoft Office Live Meeting 2007 | 8.0.6362.187"; "Microsoft Office Professional Plus 2010 | 14.0.4763.1000"; "Microsoft Office Visio 2007 Service Pack 2 (SP2)"; "Microsoft Office Visio Professional 2007 | 12.0.6425.1000"; "Microsoft Save as PDF or XPS Add-in for 2007 Microsoft Office programs | 12.0.4518.1014"; "Microsoft Silverlight | 4.0.60831.0"; "Microsoft Sync Framework Runtime v1.0 (x86) | 1.0.1215.0"; "Microsoft Sync Framework Services v1.0 (x86) | 1.0.1215.0"; "Microsoft Visual C++ 2005 Redistributable - KB2467175 | 8.0.51011"; "Microsoft

    
por Michael 21.01.2013 / 03:10

2 respostas

3

Isso deve fazer o trabalho, basta substituir a planilha e o intervalo:

Sub ExtractSoftware()
    Dim ws as Worksheet    
    Dim lngRow As Long
    Dim rngSource As Range
    Dim rng As Range
    Dim varElement As Variant

    Set ws = Sheets("YourSheet")
    For lngRow = 1 To ws.Range("A1000000").End(xlUp).Row
        Set rngSource = ws.Cells(lngRow, 1)
        Set rng = rngSource.Offset(, 1)

        For Each varElement In Split(rngSource.Value, ";")
            If InStr(varElement, "Microsoft") Then
                varElement = Trim(varElement)
                rng.Value = Mid(varElement, 2, Len(varElement) - 2)
                Set rng = rng.Offset(, 1)
            End If
        Next varElement
    Next lngRow

End Sub
    
por 21.01.2013 / 10:31
2

Eu usaria uma combinação de Find and Replace e Text to Columns .

  1. Copie a coluna em questão para o final da linha. Substituiremos alguns dos dados, portanto, fazer isso em uma segunda coluna evita a perda de dados se você cometer um erro. (Cinto e chaves!)

  2. Use a função Find and Replace para substituir todas as instâncias de Microsoft por dois caracteres especiais que não serão encontrados em nenhum outro lugar nesta coluna. Costumo usar ¬ e ' como raramente são usados, por isso você está substituindo Microsoft por ¬' .

  3. Agora, use a função Text to Columns na guia de dados. Defina seu delimitador como seu primeiro caractere especial: ¬ . Isso agora deve fornecer células prefixadas com itens da Microsoft. No entanto, você também tem muitas outras coisas depois disso.

  4. Para remover essas coisas estranhas, selecione todas as colunas que contêm essas informações e faça outro Find and Replace . Encontre isto: ; * e substitua por nada (mantenha a caixa de texto vazia). Isso deve remover qualquer coisa que não seja da Microsoft que você não queira.

  5. Finalmente, você pode adicionar novamente sua etiqueta Microsoft fazendo um Find and Replace em ' e alterando-o de volta para Microsoft .

  6. Você pode ter alguns sinais " à direita. Use outro Find and Replace para removê-los.

Uma vez que você se acostumar com as informações de hackers, você pode fazê-lo rapidamente, acredite!

    
por 21.01.2013 / 12:10