資料剖析(TextToColumns)對象可以不是儲存格嗎?
- 帖子
- 41
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- xp
- 閱讀權限
- 20
- 註冊時間
- 2012-12-20
- 最後登錄
- 2019-12-17
|
資料剖析(TextToColumns)對象可以不是儲存格嗎?
請教各位前輩
Selection.TextToColumns
其中Selection似乎一定要是range,那有辦法直接對陣列變數進行資料剖析嗎?
ex:dim A(3) as double
A(0)="1,2,3"
想不透過sheet把資料剖析成A(1)=2、A(2)=2、A(3)=3
有辦法這樣做嗎?
謝謝 |
|
|
|
|
|
|
|
- 帖子
- 41
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- xp
- 閱讀權限
- 20
- 註冊時間
- 2012-12-20
- 最後登錄
- 2019-12-17
|
回復 2# Hsieh
謝謝H大,應該說我會輸入一筆資料,此資料可能有兩種形態,第一種是純數字;ex:1 or 5 ...,第二種是字串;ex:1,3,5,
如果資料是字串的話我就用把它分割後丟進陣列裡,原本我會把它丟入某個儲存格中,在使用資料剖析(TextToColumns)做分割後再讀進陣列中,
之後計算就直接用陣列,不會使用到儲存格。
現在使用Split就可以不用資料剖析跟儲存格達到相同效果了!謝謝。 |
|
|
|
|
|
|
|
- 帖子
- 41
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- xp
- 閱讀權限
- 20
- 註冊時間
- 2012-12-20
- 最後登錄
- 2019-12-17
|
回復 2# Hsieh
而Split方法後的陣列元素,其資料型態則一律為String(字串)
如上圖,似乎使用Split後bb還是字串型態而不是陣列?
且使用val也不法將其改成數字型態,要換一個變數才能用val改成數字型態。
雖然說字串也能做數學運算就是了。 |
|
|
|
|
|
|
|
- 帖子
- 41
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- xp
- 閱讀權限
- 20
- 註冊時間
- 2012-12-20
- 最後登錄
- 2019-12-17
|
回復 5# Hsieh
謝謝,我理解了!
剛剛使用發現字串可以運算,但不能做<、=、>等判斷,只能要判斷時使用val或是像H大所說的存成另一個陣列來使用。 |
|
|
|
|
|
|
|
- 帖子
- 41
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- xp
- 閱讀權限
- 20
- 註冊時間
- 2012-12-20
- 最後登錄
- 2019-12-17
|
回復 7# GBKEE - Sub test()
- For t = 1 To 110
- If t <= "10" Then MsgBox t
- Next t
-
- End Sub
- Sub test2()
- For t = 1 To 110
- If t <= Val("10") Then MsgBox t
- Next t
-
- End Sub
複製代碼 小弟遇到的問題...test只有t=1跟10會跳msgbox出來,test2就t=1~10都會跳,不知道是哪邊出問題...
謝謝 |
|
|
|
|
|
|
|
- 帖子
- 41
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- xp
- 閱讀權限
- 20
- 註冊時間
- 2012-12-20
- 最後登錄
- 2019-12-17
|
回復 9# GBKEE
謝謝G大,新年快樂,
圖中Variant/Integer不是代表此變數目前是Integer的狀態嗎?
我以為Variant是先埠指定變數型態,待程式執行後會自動判斷此變數合適型態,例如integer、string...等,使用上比較有彈性。
還是我觀念錯誤?? |
|
|
|
|
|
|
|
- 帖子
- 41
- 主題
- 11
- 精華
- 0
- 積分
- 83
- 點名
- 0
- 作業系統
- windows
- 軟體版本
- xp
- 閱讀權限
- 20
- 註冊時間
- 2012-12-20
- 最後登錄
- 2019-12-17
|
例如t = 6
if 的時候
if (t<="10") then....
會變成
if ("6"<="10") then....
而不是
if (6<=10) then....
kimbal 發表於 2013-2-16 17:07 
謝謝各位前輩,我暸解了!
但似乎一步一步執行程式,在If t <= 10跟If t <= "10"中t的型態都還是variant/Integer,可是實際上在If t <= "10"時VBA是用variant/String去判斷?- Sub test()
- Dim t As Variant
- For t = 1 To 10
- If t <= 10 Then MsgBox t & " <= 10"
- If t <= "10" Then MsgBox t & " <= 10"
- Next t
- End Sub
複製代碼 |
|
|
|
|
|
|
|