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
. . .     . . .     . . .

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.


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ł)


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.


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.


0

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.