如果要建立一個0~63的十進制對二進制的對照表,而不想要一個數字一個數字的打,該如何產生呢?
依照下列說明,輸入公式:
儲存格A1:F1分別填入32, 16, 8, 4, ,2 ,1 (輔助用途)
觀察這個對照表可以發現,A中的0/1為每隔一個變換一次,B中的0/1為每隔二個變換一次,C中的0/1為每隔四個變換一次,D中的0/1為每隔八個變換一次,E中的0/1為每隔十六個變換一次,F中的0/1為每隔卅十二個變換一次。因此推出公式:
儲存格A3:=IF(ISODD(INT((ROW()-ROW($G$3))/A$1)),1,0)
將儲存格A3複製到A3:F66。
接著將二進制轉換為十進制:
儲存格G3:{=SUM(A3:F3*$A$1:$F$1)} (陣列公式)
將儲存格G3複製到G66。
建立好第一個表後,要根據第一個表轉換出第二個表。第二個表是將A到F中,為1的10進制數字搜集在一起,並依小到大排序排好。
儲存格I3:I34分別填入1, 2, 3, … , 32。 (輔助用途)
儲存格J3:=SMALL(IF(A$3:A$66=1,$G$3:$G$66),$I3)
將儲存格J3複製到J3:O32。
儲存格Q3:{=SMALL(IF($F$3:$F$66=1,$G$3:$G$66),(ROW()-ROW(Q$3))*6+COLUMN()-COLUMN($Q1)+1)} (陣列公式)
複製到Q3:V7,Q8,R8。
儲存格X3:{=SMALL(IF($E$3:$E$66=1,$G$3:$G$66),(ROW()-ROW(Q$3))*6+COLUMN()-COLUMN($X3)+1)} (陣列公式)
複製到X3:AC7,X8,Y8。
儲存格Q11:{=SMALL(IF($D$3:$D$66=1,$G$3:$G$66),(ROW()-ROW(Q$11))*6+COLUMN()-COLUMN($Q11)+1)} (陣列公式)
複製到Q11:V15,Q16,R16。
儲存格X11:{=SMALL(IF($C$3:$C$66=1,$G$3:$G$66),(ROW()-ROW(X$11))*6+COLUMN()-COLUMN($X11)+1)} (陣列公式)
複製到X11:AC15,X16,Y16。
儲存格Q20:{=SMALL(IF($B$3:$B$66=1,$G$3:$G$66),(ROW()-ROW(Q$20))*6+COLUMN()-COLUMN($Q20)+1)} (陣列公式)
複製到Q20:V24,Q25,R25。
儲存格X20:{=SMALL(IF($A$3:$A$66=1,$G$3:$G$66),(ROW()-ROW(X$20))*6+COLUMN()-COLUMN($X20)+1)} (陣列公式)
複製到X20:AC24,X25,Y25。
這個練習是將一個表摘要成另外兩種表,觀念可以應用到更多位元。(註:其中並沒有用到Excel 2007中的十進制/二進制轉換的函數)
留言列表