Si vous avez un tableau source appelé "datatable", placez cette formule sur une feuille supplémentaire dans chaque cellule (où les données imprimées doivent apparaître):
=OFFSET(datatable!$A$2;(ROW()-2)+((COLUMN()-1-MOD(COLUMN()-1;3))/3*4);MOD(COLUMN()-1;3))
( Ci - dessus est traduit de l' allemand en anglais La formule testée est allemand. =BEREICH.VERSCHIEBEN(datatable!$A$2;(ZEILE()-2)+((SPALTE()-1-REST(SPALTE()-1;3))/3*4);REST(SPALTE()-1;3))
)
résultat attendu:
Cela transformera le contenu de la feuille "datatable":
A1 B1 C1
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
A6 B6 C6
...
dans:
A1 B1 C1 A5 B5 C5 ...
A2 B2 C2 A6 B6 C6 ...
A3 B3 C3 ...
A4 B4 C4 ...
Explication:
Bases:
Par exemple, OFFSET( datatable!$A$2; 3; 4 )
référence la cellule par rapport à $A$2
, 3 lignes vers le bas, 4 colonnes vers la droite.
ROW()
et COLUMN()
sont des nombres, représentant la position de la cellule actuelle dans la feuille courante (par exemple $A$1
= colonne 1 / ligne 1, $C$2
= colonne 3 / ligne 2).
Le (-1)
partout est nécessaire car nous utilisons des décalages, et la première ligne et colonne est 1, mais nous voulons que la première cellule référencée soit $A$2
, pas $A$2
plus le décalage 1.
Le (ROW()-2)
est pour un titre dans la table de sortie / d'impression (il doit être -1 si vous n'avez pas de titre).
$A$2
est pour un titre dans la source "datatable". Sans titre, il doit être référencé avec $A$1
(au lieu de $A$2
).
Détails:
Le 3ème paramètre OFFSET(...;...;MOD(COLUMN()-1;3))
est le décalage de colonne , il fera toujours référence à l'une des 3 premières colonnes de la source "datatable".
C'est $A$2
plus le décalage de colonne 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
Dans le 2ème paramètre, OFFSET(...; (ROW()-2) + ((COLUMN()-1-MOD(COLUMN()-1;3))/3*4) ;...)
sélectionne le décalage de ligne .
Fondamentalement, le calcul ici est y + x * 4.
4 est le nombre de lignes que vous souhaitez afficher.
3 est le nombre de colonnes dans la source "datatable".
Le x est composé de la colonne et le module 3.
COLUMN()-1
est égal à 0, 1, 2, 3, ... et ainsi de suite.
MOD(COLUMN()-1;3)
sera 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
COLUMN()-1-MOD(COLUMN()-1;3)
sera 0, 3, 6, 9, ... et ainsi de suite, où la valeur ne change que toutes les 3 colonnes.
La division par 3 donnera 0, 1, 2, 3, ...
La multiplication par 4 donnera 0, 4, 8, 12, ...
(Pour des explications sur Modulo , voir aussi MOD()
dans l'aide d'Excel, ou le fonctionnement de modulo dans wikipedia )
(Merci à Jake Kacher, pour l'idée de base)
Le moyen le plus simple que j'ai trouvé était de créer une nouvelle feuille de calcul et de recréer simplement le tableau en le séparant manuellement dans des colonnes distinctes.
par exemple A1
=Sheet1!A1
B1
=Sheet1!B1
C1
=Sheet1!C1
D1 vide (pour une colonne de séparation)
puis E1
=Sheet1!E51
F1
=Sheet1!B51
G1
=Sheet1!C51
Et copiez ceci sur 50 lignes. Cela transforme ensuite une table à 100 colonnes à une seule colonne en une table à 50 colonnes à 2 colonnes. Ajustez selon vos besoins.
Bien sûr, cela est manuel et dépend du nombre de lignes restant le même. Il ne serait pas difficile de calculer dynamiquement le nombre de lignes requises à partir du nombre de lignes de la table d'origine et du nombre de colonnes souhaité. Le seul problème est de savoir si le tableau d'origine s'étend au-delà de ce qui tient sur une seule page lorsqu'il est séparé en colonnes sur la nouvelle feuille.
la source
Si vous avez Adobe Indesign, vous pouvez y placer un fichier Excel et faire cette mise en page en toute simplicité.
la source