2016-01-27 9 views
6

Używam ArrayFormula(), aby uprościć sposób tworzenia raportów.Jak ustawić powtarzanie zakresu n-krotnie w Arkuszu kalkulacyjnym Google

Zamiast utworzyć odwołanie w każdej komórce (np. =C1, =C2, =C3, =C4 w każdej komórce, wystarczy użyć =arrayformula(C1:C4) w jednej komórce. Robi dokładnie to samo zadanie, ale jest o wiele prostsze i utrzymuje rzeczy są bardziej uporządkowane, ponieważ po prostu potrzebuję spojrzeć w jedną komórkę na ewentualne błędy:

Świetnie się sprawdza, gdy muszę odnieść się do zakresu na inny, np. przyjąć wartości C1: C4 do zakresu A1: A4. W komórce A1 po prostu napiszę =arrayformula(C1:C4) i zrobi to magicznie

Robi się trochę trudniej, gdy zakresy nie są tej samej długości, ale jest to możliwe. Na przykład, jeśli chcę ułożyć dwa lub więcej linków zasięgu C1: C4 na górze B1: B3, na komórce A1 mogę napisać =arrayformula({C1:C4;B1:B3}).

Mój problem polega na użyciu arrayFormula() do skopiowania powtarzającego się wzoru. Na przykład, jeśli chcę skopiować zawartość komórki C1 4 razy, użyłbym =arrayformula({C1;C1;C1;C1}).

To zadziałałoby i przyniosłoby pożądany efekt. Jednak zastanawiałem się, czy jest lepszy sposób na zrobienie tego. Coś takiego jak =arrayformula({C1}*12), gdyby ten wzór powtórzył się 12 razy. Umożliwiłoby mi to również sformułowanie dynamiczne, takie jak =arrayformula({C1}*count(D:D)), gdzie wzorzec będzie powtarzany zgodnie z pewną zmienną.

Czy masz pomysły, jak to osiągnąć, używając tylko natywnej formuły (bez javascriptu)?

Odpowiedz

6

Używałbym funkcji split() zamiast funkcji arrayformula() i rept() do powtarzania pozycji komórek. Na przykład, jeśli n = 4, wzór będzie wyglądać następująco:

=split(rept(C1&";",4),";") 

REPT() powtarza pozycji komórki C1 + średnik czterokrotnie tworzące łańcuch i split() Funkcja dzieli utworzony ciąg średnikami do ogniw poziomych.

można obracać spowodowało poziome tabeli pionowej tabeli za pomocą transpozycji() funkcja:

=transpose(split(rept(C1&";",4),";")) 

I tak, można go używać do tworzenia formuł dynamicznych przy pomocy ArrayFormula() funkcja:

=arrayformula(count(D:D)*split(rept(C1&";",4), ";")) 
+0

Działa jak urok !!! DZIĘKI!!!!!!!!! – user3347814

+0

Ładnie zrobione, proszę pana! – Erutan409

+0

Cóż, ta gra wymaga, aby twoje dane były tekstem, a nie zawierały separatora, którego używasz ... – Olexa

Powiązane problemy