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)