有段時間我做了類似的實現。 檢查它它適用於你。
DATA:
lv_char TYPE char1,
lv_len TYPE i,
lv_len_minus_1 TYPE i,
lv_partial_index1 TYPE i,
lv_partial_index2 TYPE i,
lv_number TYPE i,
result_tab TYPE match_result_tab,
lv_col_index_substr TYPE string,
lv_result TYPE i.
FIELD-SYMBOLS:
<match> LIKE LINE OF result_tab.
lv_len = strlen(iv_col_index) .
lv_char = iv_col_index(1).
FIND FIRST OCCURRENCE OF lv_char IN co_char RESULTS result_tab.
READ TABLE result_tab ASSIGNING <match> INDEX 1.
lv_number = <match>-offset .
lv_number = lv_number + 1 .
IF lv_len EQ 1.
ev_col = ((26 ** (lv_len - 1)) * lv_number) .
ELSE.
lv_len_minus_1 = lv_len - 1.
lv_col_index_substr = iv_col_index+1(lv_len_minus_1) .
CALL METHOD get_col_index
EXPORTING
iv_col_index = lv_col_index_substr
IMPORTING
ev_col = lv_partial_index2.
lv_partial_index1 = ((26 ** (lv_len - 1)) * lv_number) + lv_partial_index2 .
ev_col = lv_partial_index1 .
ENDIF.
這裏該算法使用遞歸邏輯來確定數字中的列索引。 這不是我的算法,而是適用於ABAP。
在Open Excel中使用原始算法,現在無法找到任何鏈接。
來源
2014-07-15 12:00:22
Neo
這個最近的代碼高爾夫將告訴你很多方法來做到這一點(雖然在你不關心的幾種語言...)http://stackoverflow.com/questions/2634427/code-golf-numeric-equivalent- excel-column-name/2634463#2634463 – 2010-04-22 11:01:46
這是非常有用的。謝謝! :-) – Techboy 2010-04-22 11:13:50