Wyodrębnij elementy z 1 ogromnej komórki w Excelu

3

Mam ogromny arkusz kalkulacyjny komputerów i oprogramowania, które jest na nich zainstalowane.
Niestety raport zawiera listę wszystkich programów zainstalowanych na PC w jednej komórce.

Potrzebuję formuły lub makra, która przejdzie przez każde oprogramowanie w komórce i wyodrębni całe oprogramowanie zawierające słowo Microsoft i umieści je w nowej komórce w następnej kolumnie w tym samym rzędzie. Musi to zrobić dla każdego znalezionego elementu, aby każdy zainstalowany produkt Microsoft pojawił się w osobnych komórkach w 1 rzędzie.

Próbowałem różnych rzeczy, ale nie jestem pewien, jak to zrobić, aby wyświetlać każdą instancję. Zakładam, że potrzebuje jakiegoś rodzaju tablicy i pętli, ale nie miałbym pojęcia, jak to zrobić.

Jeśli potrzebujesz więcej informacji, daj mi znać.
Twoja pomoc będzie bardzo mile widziana.

Komórka oprogramowania wygląda następująco:

„Wtyczka Adobe Flash Player 10 | 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”; „Wtyczka Citrix Access Gateway | 4.6.1.2700”; „Wtyczka Citrix Password Manager | 4.6.264.0”; „Wtyczka Citrix XenApp Web | 11.0.0.5357”; „Aktualizacja definicji dla pakietu Microsoft Office 2010 (KB982726)”; „Sterownik akceleratora grafiki Intel (R)”; „JXplorer | 3.2.2”; „Java (TM) 6 Update 16 | 6.0.160”; „McAfee Agent | 4.5.0.1852”; „Moduł McAfee AntiSpyware Enterprise | 8.7.0.129”; „McAfee Encrypted USB Client | 1.5.0”; „McAfee VirusScan Enterprise | 8.7.0”; „Microsoft. Profil klienta NET Framework 4 | 4.0.30319 ";" Klient pulpitu do wirtualizacji aplikacji Microsoft | 4.6.0.1523 ";" Microsoft Conferencing Add-in dla Microsoft Office Outlook | 8.0.6362.187 ”;„ Microsoft Office Communicator 2007 | 2.0.6362.189 ";" Microsoft Office InfoPath MUI (angielski) 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 z dodatkiem Service Pack 2 (SP2) ”;„ Microsoft Office Visio Professional 2007 | 12.0.6425.1000 ”;„ Microsoft Zapisz jako dodatek PDF lub XPS dla programów pakietu Microsoft Office 2007 | 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 ";" Pakiet redystrybucyjny Microsoft Visual C ++ 2005 - KB2467175 | 8.0.51011 ”;„ Microsoft

Michael
źródło
Nawiasem mówiąc, chcę wyprowadzić dane do komórki wyglądającej tak: Microsoft Office Professional Plus 2010 | 14.0.4763.1000
Michael
Jaka jest liczba elementów oprogramowania w komórce? Wystarczająco, aby zmieścić się w całkowitej liczbie kolumn w programie Excel, jeśli komórka została podzielona na części?
chuff
Zapomniałem, że Excel 2010 ma ponad 16 000 kolumn. Co chcesz, możesz łatwo zrobić za pomocą wbudowanych poleceń na Wstążce, ale uważam, że wolisz rozwiązanie automatyczne?
chuff
Cześć dzięki za odpowiedź. Powiedziałbym, że jest około 50 elementów, które każdy komputer zainstalowałby, więc wystarczająco hehe kolumn. Tak, potrzebuję automatycznego rozwiązania, jak dla tysięcy komputerów.
Michael

Odpowiedzi:

3

Powinno to zrobić zadanie, wystarczy wymienić arkusz i zakres:

Sub ExtractSoftware ()
    Dim ws jako arkusz roboczy    
    Dim LngRow As Long
    Dim rngSource As Range
    Dim rng As Range
    Dim varElement As Variant

    Ustaw ws = Arkusze („YourSheet”)
    Dla lngRow = 1 Do ws.Range („A1000000”). End (xlUp) .Row
        Ustaw rngSource = ws.Cells (lngRow, 1)
        Ustaw rng = rngSource.Offset (, 1)

        For Each varElement In Split (rngSource.Value, ";")
            Jeśli InStr (varElement, „Microsoft”), to
                varElement = Przytnij (varElement)
                rng.Value = Mid (varElement, 2, Len (varElement) - 2)
                Ustaw rng = rng.Offset (, 1)
            End If
        Następny wariant
    Następny lngRow

Napis końcowy
Peter Albert
źródło
To dobry początek, ale zwraca wszystkie elementy, nie tylko elementy Microsoft.
Andi Mohr
1
Och, nadzorowałem filtrowanie stwardnienia rozsianego. Zmieniłem odpowiedź.
Peter Albert
Myślę, że twój oryginalny komentarz do tekstu w kolumnach w połączeniu ze wzorem znajdowania jest bardziej elastycznym rozwiązaniem.
Pynner
@Pynner: Ponieważ Ani Mohr dostarczył już pełne rozwiązanie tego podejścia, chciałem zapewnić podejście VBA, które wykonuje zadanie szybciej - i może być również elastyczne (ale wtedy wymaga pewnych zmian w kodzie)
Peter Albert
1
@Michael: W kodzie były dwa odniesienia do arkusza roboczego - zmodyfikowałem go, więc teraz wystarczy zmienić nazwę arkusza w pierwszej Setinstrukcji i zakresie. Mam nadzieję, że to zadziała.
Peter Albert
2

Użyłbym kombinacji Find and Replacei Text to Columns.

  1. Skopiuj kolumnę, o której mowa, na koniec wiersza. Zamienimy niektóre dane, więc zrobienie tego w drugiej kolumnie pozwala uniknąć utraty danych w przypadku pomyłki. (Pas i szelki!)

  2. Użyj tej Find and Replacefunkcji, aby zastąpić wszystkie wystąpienia Microsoft dwoma znakami specjalnymi, których nie znajdziesz nigdzie w tej kolumnie. Często używam Kontakty i ` ponieważ są one rzadko stosowane, więc jesteś wymianą Microsoft z ¬` .

  3. Teraz użyj Text to Columnsfunkcji na karcie danych. Ustaw swój ogranicznik jako swój pierwszy znak specjalny: ¬ . To powinno teraz dać ci komórki z prefiksem elementów Microsoft. Jednak po nim masz też wiele innych rzeczy.

  4. Aby usunąć te obce rzeczy, zaznacz wszystkie kolumny zawierające te informacje i zrób inne Find and Replace. Znajdź to :; * i zamień na nic (pozostaw puste pole tekstowe). Powinno to usunąć wszystko, czego nie chcesz od firmy Microsoft.

  5. Wreszcie można ponownie dodać etykietę Microsoft wykonując Find and ReplaceON ` i zmieniając go z powrotem do firmy Microsoft .

  6. Może masz jakieś wybitne końcowe " znaki. Za pomocą drugiego Find and Replace, aby je usunąć.

Gdy już przyzwyczaisz się do hakowania takich informacji, możesz to zrobić bardzo szybko, uwierz mi!

Andi Mohr
źródło
Chociaż w większości przypadków prawdopodobnie musisz usunąć pierwszą kolumnę ...
Peter Albert
Tak, dość często!
Andi Mohr
Przepraszam, kolego, byłem bardzo zajęty i nie miałem okazji sprawdzić odpowiedzi. Spróbuję tego i zobaczymy, jak idziemy. Twoje wysiłki są bardzo mile widziane, nie mogę uwierzyć, że jest tak wiele fajnych ppl wokół.
Michael
To bardzo dobre rozwiązanie, dziękuję. Na razie będę go używać, ale rozwiązanie VBA będzie również przydatne, gdy będę musiał to zrobić dla setek innych raportów dla różnych produktów. Jeszcze raz dziękuję
Michael