Jak wydrukować arkusz Excela w układzie wielu kolumn?

13

W moim arkuszu programu Excel mam trzy kolumny A, B, C, które są bardzo cienkie, ale mają wiele linii (> 500). Teraz, jeśli to wydrukuję, otrzymam 10 stron, które są prawie puste. Tylko na lewym brzegu każdej strony widzę te trzy kolumny.

Chcę wydrukować cały arkusz w układzie wielokolumnowym. Wystarczą 2 lub 3 kolumny na stronie. Obecnie robię to, kopiując wartości z programu Excel, wstawiając je do dokumentu programu Word, a następnie korzystam z funkcji układu wielu kolumn programu Word. Czy nie ma sposobu, aby to osiągnąć bezpośrednio w programie Excel?

Aby wyjaśnić mój problem: obecnie moje strony wyglądają tak

A B C
A B C
A B C
A B C
. . .

Ale chcę to:

A B C     A B C     A B C
A B C     A B C     A B C
A B C     A B C     A B C
. . .     . . .     . . .
RoflcoptrException
źródło

Odpowiedzi:

10

Nie sądzę, że Excel może to zrobić. Możliwym obejściem jest użycie Microsoft Word i zamiatanie kolumn: Jak przechwytywać kolumny, aby korzystać z mniejszej liczby stron

Używanie MS Worda do wężowania kolumn (#msword)

Jest to prawdopodobnie najłatwiejszy w użyciu dla jednorazowego użycia, ponieważ nie wstawiłem okna dialogowego do mojego makra Excel opisanego później.

  1. Wybierz i skopiuj kolumny z arkusza kalkulacyjnego Excel.
  2. Wklej do słowa, zajmuje to kilka chwil
  3. Wybierz wiersze do powtórzenia u góry w tabeli, a następnie zaznacz to w programie Word za pomocą Tabeli -> Wiersze do powtórzenia
  4. Wybierz całą tabelę za pomocą kotwicy lub komórki w tabeli, a następnie Tabela -> Wybierz -> Tabela
  5. Wskaż liczbę wierszy za pomocą przycisku kolumny lub Format -> Kolumny, jeśli chcesz mieć większą kontrolę nad rozmieszczeniem

Ten przykład działa dobrze. Post oferuje również inne możliwości.

LarsTech
źródło
4

Jeśli masz tabelę źródłową o nazwie „datatable”, umieść tę formułę na dodatkowym arkuszu w każdej komórce (tam, gdzie powinny pojawić się wydrukowane dane):

=OFFSET(datatable!$A$2;(ROW()-2)+((COLUMN()-1-MOD(COLUMN()-1;3))/3*4);MOD(COLUMN()-1;3))

( Powyższe są tłumaczone z niemieckiego na angielski Badany niemiecki wzór jest. =BEREICH.VERSCHIEBEN(datatable!$A$2;(ZEILE()-2)+((SPALTE()-1-REST(SPALTE()-1;3))/3*4);REST(SPALTE()-1;3)) )

Spodziewany wynik:

Spowoduje to przekształcenie zawartości arkusza „datatable”:

A1 B1 C1
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
A6 B6 C6
...

w:

A1 B1 C1    A5 B5 C5    ...
A2 B2 C2    A6 B6 C6    ...
A3 B3 C3    ...
A4 B4 C4    ...

Wyjaśnienie:

Podstawy:

np. OFFSET( datatable!$A$2; 3; 4 )odwołuje się do komórki względem $A$2, 3 wierszy w dół, 4 kolumn po prawej stronie.

ROW()i COLUMN()są liczbami reprezentującymi pozycję bieżącej komórki w bieżącym arkuszu (np. $A$1= kolumna 1 / wiersz 1, $C$2= kolumna 3 / wiersz 2).

(-1)Wszędzie są konieczne, ponieważ używamy offsetu, a pierwszy wiersz i kolumna 1, ale chcemy najpierw odwołuje się do komórek $A$2, a nie $A$2plus offset 1.

(ROW()-2)Jest nagłówek w output- / wydruku tabeli (shold to być -1 jeśli nie ma nagłówka).
$A$2jest nagłówek w źródle „datatable”. Bez nagłówka należy się do niego odwołać $A$1(zamiast $A$2).

Detale:

Trzeci parametr OFFSET(...;...;MOD(COLUMN()-1;3))to przesunięcie kolumny , zawsze będzie odnosić się do jednej z pierwszych 3 kolumn źródła „datatable”.
To jest $A$2plus przesunięcie kolumny 0, 1, 2, 0, 1, 2, 0, 1, 2, ...

W drugim parametrze OFFSET(...; (ROW()-2) + ((COLUMN()-1-MOD(COLUMN()-1;3))/3*4) ;...)wybiera przesunięcie wiersza .
Zasadniczo matematyka tutaj to y + x * 4.

4 to liczba wierszy, które chcesz wyświetlić.
3 to liczba kolumn w źródłowym „datatable”.

X składa się z kolumny, a moduł 3.
COLUMN()-1wynosi 0, 1, 2, 3, ... i tak dalej.
MOD(COLUMN()-1;3)będzie 0, 1, 2, 0, 1, 2, 0, 1, 2, ...

COLUMN()-1-MOD(COLUMN()-1;3)będzie wynosić 0, 3, 6, 9, ... i tak dalej, gdzie wartość zmienia się tylko co 3 kolumnę.
Dzielenie przez 3 spowoduje 0, 1, 2, 3, ...
Mnożenie przez 4 spowoduje 0, 4, 8, 12, ...

(Aby uzyskać wyjaśnienie dotyczące Modulo , zobacz także MOD()w pomocy programu Excel lub operacji modulo w Wikipedii )

(Dzięki Jake Kacher za podstawowy pomysł)

Kicia
źródło
1

Możesz użyć prostej formuły:

=OFFSET(Sheet1!$A$1,(ROW()-2)*5+COLUMN(),0)

aby umożliwić przepływ danych w poziomie w 5 kolumnach.
Następnie możesz wybrać rozmiar strony, wydrukować pierwszy wiersz na każdej stronie itp.
Prosty, schludny, nie wymaga VBA.

Jake Kacher
źródło
3
Prawdopodobnie przydatny dla guru Excela - ale nie mam pojęcia, gdzie go umieszczę ani jak go używać.
Anthony Nichols,
1
Nie robi dokładnie tego, o co proszono, ale jest jednak interesujący. Jeśli kolumna A miała długą serię liczb, to jeśli skopiowałeś tę formułę, by powiedzieć C, D, E, F, G i przeciągnąłeś ją w dół o wystarczającą liczbę wierszy, otrzymasz 5 krótszych kolumn danych. Dane przepływają przez pięć kolumn, podczas gdy spodziewam się, że chcesz, aby dane przepływały przez każdą kolumnę i wąż. Mimo to bardzo interesująca kompaktowa formuła.
loneRanger
0

Najprostszym sposobem, jaki znalazłem, było utworzenie nowego arkusza roboczego i po prostu odtworzenie tabeli ręcznie, rozdzielając ją na osobne kolumny.

np. A1 =Sheet1!A1

B1 =Sheet1!B1

C1 =Sheet1!C1

D1 puste (dla kolumny dzielącej)

następnie E1 =Sheet1!E51

F1 =Sheet1!B51

G1 =Sheet1!C51

I skopiuj to ponad 50 wierszy. To następnie zamienia pojedynczą kolumnę 100-rzędową tabelę w 2-kolumnową 50-rzędową tabelę. Dostosuj do swoich potrzeb.

Oczywiście jest to ręczne i zależy od liczby wierszy pozostających bez zmian. Dynamiczne obliczenie wymaganej liczby wierszy na podstawie liczby wierszy w oryginalnej tabeli i liczby potrzebnych kolumn nie byłoby trudne. Jedynym problemem jest to, że oryginalna tabela wykracza poza to, co zmieści się na pojedynczej stronie po podzieleniu na kolumny na nowym arkuszu.

Dave Bradshaw
źródło
0

Jeśli masz program Adobe Indesign, możesz w nim umieścić plik programu Excel i z łatwością utworzyć ten układ.

Igor Fomenko
źródło