电竞比分网-中国电竞赛事及体育赛事平台

分享

使用VBA對Excel中列名稱與列號之間進(jìn)行轉(zhuǎn)換

 筆錄收藏 2013-07-22
這里的列名稱指的是A、B、C等樣式的列,列號指列的編號,如1、2、3等等。
轉(zhuǎn)換之后,A列對應(yīng)的列號為1,反之,列號為1的列轉(zhuǎn)換之后為A。函數(shù)如下:
1、通過列名稱轉(zhuǎn)換成對應(yīng)的列號。
Function GetColumnNum(ByVal ColumnName As String) As Integer 
    Dim Result As Integer, First As Integer, Last As Integer     Result = 1
     If Trim(ColumnName) <> "" Then
         If Len(ColumnName) = 1 Then 
           Result = Asc(UCase(ColumnName)) - 64
         ElseIf Len(ColumnName) = 2 Then 
           If UCase(ColumnName) > "IV" Then ColumnName = "IV" 
           First = Asc(UCase(Left(ColumnName, 1))) - 64
            Last = Asc(UCase(Right(ColumnName, 1))) - 64
            Result = First * 26 + Last 
        End If
     End If
     GetColumnNum = Result End Function
測試:
Sub TestGetColumnNum() 
    Dim ColumnNum As Integer
     ColumnNum = GetColumnNum("AA")
     MsgBox ColumnNum, vbInformation, "測試"
 End Sub
2、通過列號轉(zhuǎn)換成對應(yīng)的列名稱。
Function GetColumnName(ByVal ColumnNum As Integer) As String
     Dim First As Integer, Last As Integer
     Dim Result As String 
    If ColumnNum > 256 Then ColumnNum = 256
     First = Int(ColumnNum / 27)
     Last = ColumnNum - (First * 26) 
    If First > 0 Then
        Result = Chr(First + 64)
     End If     If Last > 0 Then
        Result = Result & Chr(Last + 64) 
    End If 
    GetColumnName = Result
 End Function
測試:
 
Sub TestGetColumnName()
     Dim ColumnName As String
     ColumnName = GetColumnName(27) 
    MsgBox ColumnName, vbInformation, "測試"
 End Sub
3、說明
在以上兩個函數(shù)中,如果輸入的參數(shù)大于Excel的最大列號"IV"(256),則返回的值為最大的列數(shù)。

或有:
getcolname=iif(intcol\26,chr(64 + intcol\26), " ")& chr(64+intcol mod 26)即可實現(xiàn)
其中:iif(intcol\26,chr(64 + intcol\26), " ")返回列號的第一位如AB列的第一位為A, chr(64+intcol mod 26)返回列號的低位,如如AB列的低位為B;
解釋:如果intcol=2,則intcol\26為假,函數(shù)iif返回“空格”,而chr(65+1mod 26)=65,65為A,所以1對應(yīng)的列號為b,此種算法有錯誤。

如果intcol>26則intcol\26為真,函數(shù)iif返回
除法(/)、整數(shù)除法(\)、求模運算(Mod)
IIF 函數(shù)
根據(jù)表達(dá)式的值,來返回兩部分中的其中一個。
IIF(expr, truepart, falsepart)
IIF 函數(shù)的語法含有下面這些命名參數(shù):
expr        必要參數(shù)。用來判斷真?zhèn)蔚谋磉_(dá)式。
truepart        必要參數(shù)。如果 expr 為 True,則返回這部分的值或表達(dá)式。
falsepart        必要參數(shù)。如果 expr 為 False,則返回這部分的值或表達(dá)式。


代碼 字符 代碼 字符 代碼 字符 代碼 字符
0   32 [空格] 64 @ 96 `
1   33 ! 65 A 97 a
2   34 " 66 B 98 b
3   35 # 67 C 99 c
4   36 $ 68 D 100 d
5   37 % 69 E 101 e
6   38 & 70 F 102 f
7   39 ' 71 G 103 g
8 ** 40 ( 72 H 104 h
9 ** 41 ) 73 I 105 i
10 ** 42 * 74 J 106 j
11   43 + 75 K 107 k
12   44 , 76 L 108 l
13 ** 45 - 77 M 109 m
14   46 . 78 N 110 n
15 ? 47 / 79 O 111 o
16 ? 48 0 80 P 112 p
17 ? 49 1 81 Q 113 q
18 ? 50 2 82 R 114 r
19  51 3 83 S 115 s
20  52 4 84 T 116 t
21  53 5 85 U 117 u
22 ? 54 6 86 V 118 v
23 ? 55 7 87 W 119 w
24 ? 56 8 88 X 120 x
25 ? 57 9 89 Y 121 y
26 ? 58 : 90 Z 122 z
27  59 ; 91 [ 123 {
28 ? 60 < 92 \ 124 |
29 ? 61 = 93 ] 125 }
30 - 62 > 94 ^ 126 ~
31   63 ? 95 _ 127 ?

下表列出了字符集中的 128 - 255。

代碼 字符 代碼 字符 代碼 字符 代碼 字符
128 160 [空格] 192 à 224 à
129 ? 161 ? 193 á 225 á
130 ? 162 194 ? 226 a
131 ? 163 195 ? 227 ?
132 ? 164 ¤ 196 ? 228 ?
133 165 197 ? 229 ?
134 ? 166 | 198 ? 230 ?
135 ? 167 § 199 ? 231 ?
136 ? 168 ¨ 200 è 231 ?
137 169 ? 201 é 232 è
138 ? 170 a 202 ê 233 é
139 ? 171 ? 203 ? 234 ê
140 ? 172 ? 204 ì 235 ?
141 ? 173 - 205 í 236 ì
142 ? 174 ? 206 ? 237 í
143 ? 175 ˉ 207 ? 238 ?
144 ? 176 ° 208 D 239 ?
145 177 ± 209 ? 240 e
146 178 2 210 ò 241 ?
147 179 3 211 ó 242 ò
148 180 212 ? 243 ó
149 ? 181 μ 213 ? 244 ?
150 182 ? 214 ? 245 ?
151 183 · 215 × 246 ?
152 ? 184 ? 216 ? 247 ÷
153 ? 185 1 217 ù 248 ?
154 ? 186 o 218 ú 249 ù
155 ? 187 ? 219 ? 250 ú
156 ? 188 ? 220 ü 251 ?
157 ? 189 ? 221 Y 252 ü
158 ? 190 ? 222 T 253 y
159 ? 191 ? 223 ? 254 t


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多