SUMA Od kolumn 1 arkusza do wierszy arkusza 2

0

Próbowałem przez chwilę szukać, ale nie widziałem tego, czego szukałem.

Na arkuszu 1 mam około 100 kolumn, z których każda reprezentuje element. Każdy wiersz jest zapełniany ilością tego elementu. Jak możesz sobie wyobrazić, bardzo denerwujące jest ciągłe przewijanie w prawo, więc stworzyłem Arkusz2 („Ilości”). W tym arkuszu utworzyłem te same nagłówki co arkusz 1, z tym wyjątkiem, że zamiast każdego elementu zawierającego kolumnę, utworzyłem każdy element w wierszu. Na przykład:

Arkusz 1:

A1:I1 contains customer information.  No calculating needs to be done here.
J1:DG1 contains a bunch of items (fish, salad, etc).
J2 contains quantity of fish that was ordered by customer A2.
J3 contains quantity of fish that was ordered by customer A3.
K2 contains quantity of salad that was ordered by customer A2.
K3 contains quantity of salad that was ordered by customer A3. 

Arkusz 2:

A1:A102 contains same information as J1:DG1.

Zrozumiałeś do tej pory? Świetny. :)

W Arkusz2, chciałbym B1:B102być równa SUMjego odpowiednik w Arkusz1. Na przykład B1 w Arkuszu 2 będzie: =SUM(Sheet1!J2:J1048576)(suma całej kolumny J). To działa świetnie. Problem polega na tym, jak skopiować tę formułę, aby zapełniła się B2:B102. Jeśli skopiuję to, co napisałem powyżej, jest w B1, pojawia się błąd. Działa, jeśli spróbuję skopiować forumula B1 C1:DG1, ale to przeczy celowi, muszę go wkleić w dół. (transpozycja też nie działa).

TIA

Daniel
źródło

Odpowiedzi:

0

Można to zrobić za pomocą INDEXfunkcji. Aby zwiększyć zamieszanie związane z tą funkcją, Microsoft postanowił zaimplementować dwa różne typy tej funkcji. Użyjemy wariantu „array”. Więcej informacji o tej funkcji tutaj . Ta funkcja umożliwia nam wybranie macierzy (twój Arkusz 1) i wybranie z niej wiersza lub kolumny. INDEXZwraca odniesienie do tego wiersza lub kolumny. Następnie użyjemy, SUMaby dodać wszystkie elementy w kolumnie. Ostatnią sztuczką jest wybranie prawej kolumny. Aby to zrobić, sprawdzimy numer wiersza (za pomocą ROW) w arkuszu 2 i użyjemy go, aby odwołać się do prawej kolumny w arkuszu 1.

Teraz dla formuły: wstaw to do B2 (kolumna A ma nazwy produktów) `= SUMA (INDEKS (Arkusz1! $ A: $ DG ;; 9 + ROW (Arkusz2! A1))) '' i skopiuj i wklej do końca w razie potrzeby.

Dwie uwagi na temat formuły:

  • nie ma drugiego argumentu w INDEXfunkcji, dzięki czemu funkcja zwraca odwołanie do całej kolumny, która jest następnie dodawana ( SUM);
  • dodanie 9 kabli ROWjest konieczne, ponieważ dane produktu zaczynają się w kolumnie J, 10. kolumnie, więc 9 + 1 = 10, pierwsza kolumna do wyboru.

Ostatnia uwaga: aby zaznaczyć całą kolumnę, użyj J:Jadnotacji zamiast J1:J1048576sugerowanej w pytaniu.

agtoever
źródło
Dziękuję za odpowiedź. Czy poprawnie udzielam odpowiedzi? Wszystko, co robię, to kopiowanie kodu =SUM(INDEX(Sheet1!$A:$DG;;9+ROW(Sheet2!A1)))'i umieszczanie go w komórce A1 w arkuszu 2 - i pojawia się błąd (automatycznie się wyróżnia $DG).
Daniel
@Daniel: przepraszam, powinienem był wspomnieć, gdzie umieścił wzór. Zobacz odpowiedź. Twoje produkty są w kolumnie A. Formułę należy umieścić w B1, a następnie skopiować i wkleić.
agtoever
Jeszcze raz dziękuję za odpowiedź. Nadal pojawia się ten błąd (że jest literówka lub coś takiego). Wyjaśnię, co mam jeszcze raz, na wypadek, gdyby nie było jasne. Sheet1 J1:DG1zawiera każdy element. Sheet 1 J2:DG2zawiera ilości dla przedmiotu powyżej. Sheet2 A1:A102zawiera to samo co Sheet1 J1:DG1. Chciałbym Sheet2 B1:B102pokazać SUMkażdą pozycję. Tak Sheet2 B1powinno być SUMz Sheet1 J:J, i Sheet2 B2powinno być SUMS Sheet 1 K:K. Jeszcze raz dziękuję, naprawdę doceniam twoją pomoc! Ponadto, czy nie powinno być ;w twoim kodzie ,?
Daniel
Rozumiem co chcesz robić. Daj mi znać dokładny błąd, który otrzymasz. Używasz angielskiej wersji programu Excel, a arkusz 1 nazywa się „Arkusz1”? Zamiast pisać Sheet1!$a:$DG, możesz również zaznaczyć tę część formuły i za pomocą myszy wybrać arkusz 1 od A do DG (wybierz, klikając i przeciągając myszą nad nagłówkami kolumn; zobacz tutaj i wyjaśnij, jak wybrać wiele kolumn).
agtoever
Jeszcze raz dziękuję za odpowiedź. Tak, wszystkie powyższe. Błąd, który otrzymuję, jest błędem domyślnym podczas wprowadzania niepoprawnego ciągu formuły. Chciałbym lepiej zrozumieć twoją odpowiedź, ponieważ wydaje się, że warto wiedzieć w przyszłości. W międzyczasie znalazłem tutaj obejście mojego problemu: link , 2. post. I naprawdę wdzięczni za pomoc. Chciałbym opublikować stronę Excela, abyś mógł ją zobaczyć, ale zawiera ona dane osobowe.
Daniel
0

Znaleziono obejście. Drugi post w połączonym wątku. ( Lustro )

Jak wspomniałem w OP, jeśli spróbuję zrobić Sheet2 B1 =SUM(Sheet!J:J), a następnie skopiować to w prawo, między kolumnami , to poprawnie kontynuuje dopasowanie formuły C1 =SUM(Sheet1!K:K), D1 =SUM(Sheet1!L:L, etc). Problem polegał jednak na tym, że próba skopiowania formuły w dół , między wierszami, nieprawidłowo obsługiwałaby formułę. Problem wystąpił nawet wtedy, gdy najpierw skopiowałem w prawo, między kolumnami, a następnie cut/paste-special-transpose. Jednak dzięki temu obejściu udało mi się rozwiązać problem z transpozycją i uzyskać wszystkie komórki Sheet2 B:Breprezentujące SUMod Sheet1.

Powodzenia!

Edycja: dodanie lustra obejścia, na wypadek, gdyby zaginęło.

Daniel
źródło