Tworzę bazę danych informacji o adresie firmy, w tym kluczowy personel dla każdej firmy. Arkusz kalkulacyjny Google, który odziedziczyłem po tym projekcie, zawiera kolumnę „kluczowego personelu” (w kolumnie B), z wieloma nazwami kluczowych pracowników wymienionymi w tej samej komórce, oddzielonymi podziałami linii (tj. CHAR (10)). W jednym rzędzie jest jedna firma. Liczba linii w komórce „kluczowego personelu” zmienia się rząd po rzędzie. Mój początkowy arkusz wygląda następująco:
Aby zoptymalizować ten arkusz, muszę wykonać następujące czynności:
- podziel każdą wieloliniową komórkę „kluczowego personelu”, aby nazwa każdego kluczowego personelu pojawiła się w osobnym wierszu. Wymaga to wstawienia nowego wiersza (ów) poniżej oryginalnego wiersza.
- zduplikuj dane ze wszystkich pozostałych komórek w oryginalnym wierszu (tj. z kolumn A i C: E), tak aby każdy nowy wiersz zawierał pełne dane dla każdej firmy
- Potrzebuję zautomatyzowanego procesu - będę miał około 1000 firm do przetworzenia, więc nie mogę tego zrobić żadnymi ręcznymi krokami
Arkusz powinien wyglądać następująco:
Używanie jest =TRANSPOSE(SPLIT(B1,CHAR(10)))
oczywiście tylko częścią - nie wstawia nowych wierszy i nie powiela otaczających wpisów w kolumnach. Wszelka pomoc z wdzięcznością przyjęta!
Odpowiedzi:
Po pierwsze przepraszam za późną odpowiedź, ale mam dla ciebie rozwiązanie.
Kod
Wyjaśnione
Skrypt ocenia każdy wiersz, a zwłaszcza drugą kolumnę każdego wiersza (w tablicach JavaScript są oparte na zerach, więc kolumna 2 odpowiada indeksowi 1 tablicy). Dzieli zawartość tej komórki na wiele wartości i używa
"\n"
jako separatora (przesunięcia wiersza). Następnie dodaje istniejące informacje do tablicy i dodaje tylko pojedyncze wyniki, gdy osiągnie indeks 1. (k == 1)
Nowo przygotowany wiersz jest następnie dodawany do innej tablicy, która jest zwracana, aby pokazać wynik.Zrzut ekranu
dane
wynik
Przykład
Stworzyłem dla Ciebie przykładowy plik: komórki wieloliniowe w nowe rzędy .
Dodaj skrypt w menu Narzędzia> Edytor skryptów i naciśnij przycisk Zapisz.
źródło
Powtarzalne rozwiązanie będzie wymagało skryptu.
Ale dla jednorazowego wysiłku możesz po prostu użyć
=SPLIT(B3,CHAR(10))
. To da ci wszystkie nazwiska osoby w kolumnach pomocniczych, takich jak to:Copy / Paste-special, ceni zawartość kolumny pomocniczej.
I dla każdej użytej kolumny pomocniczej (mam nadzieję, że nie za dużo, bo mam nadzieję, że nie ma zbyt wielu osób w jednej firmie) ręcznie skopiuj i wklej blok wierszy do końca bieżącego bloku. (To nie jest świetny opis, ale masz dryf.)
źródło
Dla osób, które mogą nie od razu zrozumieć, jak używać pomocnej funkcji niestandardowej w zaakceptowanej odpowiedzi :
Potrzebujesz więcej niż jednego arkusza, w przykładzie dwa arkusze to
DATA
iRESULT
.RESULT
Arkusz jest pusty do momentu uruchomienia kwerendy. Możesz zobaczyć zapytanie odnoszące się doDATA
arkusza na zrzucie ekranu Jacoba.Najprawdopodobniej będziesz musiał zmodyfikować wartość porównania dla
k
linii 8, która odnosi się do kolumny, w której powinny zostać znalezione dane do analizy. Ta sama liczba będzie musiała przejść do drugiej wartości tablicy w wierszu 4.Może być konieczne zmodyfikowanie separatora w wierszu 4, który jest obecnie
\n
Aby to wszystko było trochę łatwiejsze, wziąłem ten sam kod i wyodrębniłem separator i kolumnę docelową do zmiennych ustawionych u góry funkcji. Jak wspomina Jacob, liczba kolumn docelowych zaczyna się od 0 jako pierwszej liczby.
Bibliografia
źródło