請問一個26進位的問題 |
缺席
|
cat200188
中階會員 發表:37 回覆:78 積分:68 註冊:2005-01-18 發送簡訊給我 |
|
jackiemi2_seed
中階會員 發表:37 回覆:97 積分:76 註冊:2006-09-11 發送簡訊給我 |
|
cat200188
中階會員 發表:37 回覆:78 積分:68 註冊:2005-01-18 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
其實我常對大家提到po文時的應有態度, 不要用迂迴試探的語法求大家解法, 因為如果我們不清楚你的前因後果, 往往回答出來的很可能是被導入錯誤的想法中, 反而給了一個很錯誤的做法, 所以如果你一開始就提是要轉換excel的位址那就很明朗化了
這是我的轉換公式, 提供你參考(雖然你已解出, 不過也期待你可以與大家分享你的解法) function getCell(cellno: integer): string; const achar: array[0..26] of Char = (' ','A','B','C','D','E','F','G','H', 'I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); var modnum: integer; divnum: integer; begin // Z=26, AZ=52, BZ=78 CZ=78 26.... modnum:= cellno mod 26; if modnum=0 then modnum:= 26; if cellno > 26 then divnum:= cellno div 26 else divnum:= 0; if (modnum=26) and (divnum>0) then result:= trim(achar[divnum-1] achar[modnum]) else result:= trim(achar[divnum] achar[modnum]); end; 註:這支程式是在解excel的column, 例如第35column 在 excel 中是那一個位址(例如 AI), 至於 ROW沒有併到這裡計算, 也沒有必要) 另外, 這也不是叫26進位的演算法 |
cat200188
中階會員 發表:37 回覆:78 積分:68 註冊:2005-01-18 發送簡訊給我 |
謝謝版主說明,我剛開始的標頭說明應該是錯了,應該直接寫明轉換excel標頭寫法,在此分享一下我的寫法,可能有很多bug,請各位指正
function datatoexcel(vv:integer):String; const data :array[0..26] of String =('','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'); var i,j:integer ; begin i:=vv; result:=''; if i <= 26 then begin result := data[i]; end else begin if i mod 26 = 0 then begin j:=26; end else begin j:= i mod 26 ; end; result:=datatoexcel(i div 26) data[j]; end; end;
------
....... |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |