หากคุณมีตารางต้นฉบับเรียกว่า "datatable" ให้วางสูตรนี้ลงในชีตพิเศษลงในเซลล์ทุกเซลล์ (ซึ่งข้อมูลที่พิมพ์ควรปรากฏขึ้น):
=OFFSET(datatable!$A$2;(ROW()-2)+((COLUMN()-1-MOD(COLUMN()-1;3))/3*4);MOD(COLUMN()-1;3))
( ข้างต้นจะถูกแปลจากภาษาเยอรมันเป็นภาษาอังกฤษเยอรมันสูตรการทดสอบคือ. =BEREICH.VERSCHIEBEN(datatable!$A$2;(ZEILE()-2)+((SPALTE()-1-REST(SPALTE()-1;3))/3*4);REST(SPALTE()-1;3))
)
ผลลัพธ์ที่คาดหวัง:
สิ่งนี้จะแปลงเนื้อหาของแผ่นข้อมูล "datatable":
A1 B1 C1
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
A6 B6 C6
...
เป็น:
A1 B1 C1 A5 B5 C5 ...
A2 B2 C2 A6 B6 C6 ...
A3 B3 C3 ...
A4 B4 C4 ...
คำอธิบาย:
ข้อมูลเบื้องต้น:
เช่นOFFSET( datatable!$A$2; 3; 4 )
การอ้างอิงเซลล์ที่สัมพันธ์กับ$A$2
, 3 แถวลง, 4 คอลัมน์ทางด้านขวา
ROW()
และCOLUMN()
เป็นตัวเลขซึ่งแสดงถึงตำแหน่งของเซลล์ปัจจุบันในชีตปัจจุบัน (เช่น$A$1
= คอลัมน์ 1 / แถว 1, $C$2
= คอลัมน์ 3 / แถว 2)
(-1)
ทุกที่มีความจำเป็นเพราะเราจะใช้การชดเชยและแถวแรกและคอลัมน์ 1 แต่เราต้องการที่เซลล์แรกที่มีการอ้างอิงที่จะ$A$2
ไม่$A$2
บวกชดเชย 1
นี่(ROW()-2)
คือพาดหัวในเอาต์พุต - / ตารางการพิมพ์ (แสดงเป็น -1 หากคุณไม่มีพาดหัว)
$A$2
มีไว้สำหรับพาดหัวในซอร์ส "datatable" หากไม่มีบรรทัดแรกควรอ้างอิงด้วย$A$1
(แทน$A$2
)
รายละเอียด:
พารามิเตอร์ที่ 3 OFFSET(...;...;MOD(COLUMN()-1;3))
คือคอลัมน์ออฟเซ็ตซึ่งจะอ้างอิงหนึ่งในสามคอลัมน์แรกของแหล่งข้อมูล "datatable" เสมอ
นั่นคือ$A$2
บวกคอลัมน์ชดเชย 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
ในพารามิเตอร์ 2 OFFSET(...; (ROW()-2) + ((COLUMN()-1-MOD(COLUMN()-1;3))/3*4) ;...)
เลือกแถวชดเชย
พื้นฐานทางคณิตศาสตร์นี่คือ y + x * 4
4 คือจำนวนแถวที่คุณต้องการแสดง
3 คือจำนวน colums ในแหล่งข้อมูล "datatable"
x ทำจากคอลัมน์และโมดูโล 3
COLUMN()-1
คือ 0, 1, 2, 3, ... และอื่น ๆ
MOD(COLUMN()-1;3)
จะเป็น 0, 1, 2, 0, 1, 2, 0, 1, 2, ...
COLUMN()-1-MOD(COLUMN()-1;3)
จะเป็น 0, 3, 6, 9, ... และอื่น ๆ โดยที่ค่าจะเปลี่ยนเฉพาะคอลัมน์ที่ 3 เท่านั้น
การหารด้วย 3 จะทำให้ 0, 1, 2, 3, ... การ
คูณด้วย 4 จะทำให้ 0, 4, 8, 12, ...
(สำหรับคำอธิบายเกี่ยวกับModuloเห็นMOD()
ในความช่วยเหลือ Excel หรือมอดุโลในวิกิพีเดีย )
(ขอบคุณ Jake Kacher สำหรับแนวคิดพื้นฐาน)