Nếu bạn có một bảng nguồn được gọi là "có thể truy cập được", hãy đặt công thức này trên một bảng phụ vào mỗi ô (nơi dữ liệu được in sẽ xuất hiện):
=OFFSET(datatable!$A$2;(ROW()-2)+((COLUMN()-1-MOD(COLUMN()-1;3))/3*4);MOD(COLUMN()-1;3))
( ở trên được dịch từ tiếng Đức sang tiếng Anh. Công thức tiếng Đức được thử nghiệm là =BEREICH.VERSCHIEBEN(datatable!$A$2;(ZEILE()-2)+((SPALTE()-1-REST(SPALTE()-1;3))/3*4);REST(SPALTE()-1;3))
:)
kết quả mong đợi:
Điều này sẽ biến đổi nội dung của trang tính "có thể truy cập":
A1 B1 C1
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
A6 B6 C6
...
vào:
A1 B1 C1 A5 B5 C5 ...
A2 B2 C2 A6 B6 C6 ...
A3 B3 C3 ...
A4 B4 C4 ...
Giải trình:
Khái niệm cơ bản:
ví dụ: OFFSET( datatable!$A$2; 3; 4 )
tham chiếu ô tương ứng với $A$2
, 3 hàng xuống, 4 cột bên phải.
ROW()
và COLUMN()
là các số, biểu thị vị trí của ô hiện tại trong trang tính hiện tại (ví dụ $A$1
= cột 1 / hàng 1, $C$2
= cột 3 / hàng 2).
Mọi (-1)
nơi đều cần thiết bởi vì chúng tôi đang sử dụng offset, và hàng và cột đầu tiên là 1, nhưng chúng tôi muốn ô được tham chiếu đầu tiên là $A$2
, không $A$2
cộng với offset 1.
Cái (ROW()-2)
này dành cho một tiêu đề trong bảng đầu ra- / in (Nó sẽ là -1 nếu bạn không có tiêu đề).
$A$2
là cho một tiêu đề trong nguồn "có thể truy cập". Không có tiêu đề nên được tham chiếu với $A$1
(thay vì $A$2
).
Chi tiết:
Tham số thứ 3 OFFSET(...;...;MOD(COLUMN()-1;3))
là phần bù cột , nó sẽ luôn tham chiếu một trong 3 cột đầu tiên của nguồn "có thể truy cập".
Đó là $A$2
cộng cột bù 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
Trong tham số thứ 2 OFFSET(...; (ROW()-2) + ((COLUMN()-1-MOD(COLUMN()-1;3))/3*4) ;...)
chọn phần bù hàng .
Về cơ bản toán học ở đây là y + x * 4.
4 là số hàng bạn muốn hiển thị.
3 là số lượng colums trong nguồn "datable".
X được tạo từ cột và modulo 3.
COLUMN()-1
là 0, 1, 2, 3, ... và cứ thế.
MOD(COLUMN()-1;3)
sẽ là 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
COLUMN()-1-MOD(COLUMN()-1;3)
sẽ là 0, 3, 6, 9, ... và cứ thế, trong đó giá trị chỉ thay đổi mỗi cột thứ 3.
Chia cho 3 sẽ cho kết quả là 0, 1, 2, 3, ...
Phép nhân với 4 sẽ cho kết quả là 0, 4, 8, 12, ...
(Để giải thích về Modulo , xem thêm MOD()
trong trợ giúp excel hoặc thao tác modulo trong wikipedia )
(Cảm ơn Jake Kacher, vì ý tưởng cơ bản)