標題:
5457001E01,這在用VBA自動比對條件撈出值後變成546E+07,這VBA要如何修正呢?
[打印本頁]
作者:
jeffrey628litw
時間:
2019-6-5 14:20
標題:
5457001E01,這在用VBA自動比對條件撈出值後變成546E+07,這VBA要如何修正呢?
5457001E01,這在用VBA自動比對條件撈出值後變成546E+07,這VBA要如何修正才能自動撈出正確的值呢?
[attach]30778[/attach]
[attach]30779[/attach]
[attach]30780[/attach]
作者:
jeffrey628litw
時間:
2019-6-5 19:39
回復
2#
s13030029
我格式自己改這樣這一筆抓的到,但其他的就不確定了
Moule5 裡面加入這些
'以下為將OE No E+格式改成E
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 16
ActiveWindow.ScrollRow = 18
ActiveWindow.ScrollRow = 21
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 26
ActiveWindow.ScrollRow = 29
ActiveWindow.ScrollRow = 32
ActiveWindow.ScrollRow = 36
ActiveWindow.ScrollRow = 40
ActiveWindow.ScrollRow = 45
ActiveWindow.ScrollRow = 50
ActiveWindow.ScrollRow = 54
ActiveWindow.ScrollRow = 59
ActiveWindow.ScrollRow = 64
ActiveWindow.ScrollRow = 68
ActiveWindow.ScrollRow = 72
ActiveWindow.ScrollRow = 75
ActiveWindow.ScrollRow = 78
ActiveWindow.ScrollRow = 81
ActiveWindow.ScrollRow = 85
ActiveWindow.ScrollRow = 87
ActiveWindow.ScrollRow = 89
ActiveWindow.ScrollRow = 92
ActiveWindow.ScrollRow = 94
ActiveWindow.ScrollRow = 97
ActiveWindow.ScrollRow = 99
ActiveWindow.ScrollRow = 102
ActiveWindow.ScrollRow = 104
ActiveWindow.ScrollRow = 107
ActiveWindow.ScrollRow = 110
ActiveWindow.ScrollRow = 113
ActiveWindow.ScrollRow = 116
ActiveWindow.ScrollRow = 118
ActiveWindow.ScrollRow = 120
ActiveWindow.ScrollRow = 122
ActiveWindow.ScrollRow = 123
ActiveWindow.ScrollRow = 124
ActiveWindow.ScrollRow = 125
ActiveWindow.ScrollRow = 126
ActiveWindow.ScrollRow = 127
ActiveWindow.ScrollRow = 128
ActiveWindow.ScrollRow = 129
ActiveWindow.ScrollRow = 130
ActiveWindow.ScrollRow = 131
ActiveWindow.ScrollRow = 132
ActiveWindow.ScrollRow = 133
ActiveWindow.ScrollRow = 134
Range("F2:F151").Select
ActiveWindow.ScrollRow = 133
ActiveWindow.ScrollRow = 132
ActiveWindow.ScrollRow = 130
ActiveWindow.ScrollRow = 129
ActiveWindow.ScrollRow = 126
ActiveWindow.ScrollRow = 121
ActiveWindow.ScrollRow = 117
ActiveWindow.ScrollRow = 112
ActiveWindow.ScrollRow = 108
ActiveWindow.ScrollRow = 102
ActiveWindow.ScrollRow = 94
ActiveWindow.ScrollRow = 86
ActiveWindow.ScrollRow = 80
ActiveWindow.ScrollRow = 74
ActiveWindow.ScrollRow = 69
ActiveWindow.ScrollRow = 65
ActiveWindow.ScrollRow = 61
ActiveWindow.ScrollRow = 57
ActiveWindow.ScrollRow = 53
ActiveWindow.ScrollRow = 48
ActiveWindow.ScrollRow = 45
ActiveWindow.ScrollRow = 41
ActiveWindow.ScrollRow = 37
ActiveWindow.ScrollRow = 34
ActiveWindow.ScrollRow = 30
ActiveWindow.ScrollRow = 27
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 20
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 12
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 1
Range("F2:F151,O2").Select
Range("O2").Activate
ActiveWindow.ScrollRow = 2
ActiveWindow.ScrollRow = 3
ActiveWindow.ScrollRow = 4
ActiveWindow.ScrollRow = 5
ActiveWindow.ScrollRow = 6
ActiveWindow.ScrollRow = 7
ActiveWindow.ScrollRow = 8
ActiveWindow.ScrollRow = 10
ActiveWindow.ScrollRow = 11
ActiveWindow.ScrollRow = 13
ActiveWindow.ScrollRow = 15
ActiveWindow.ScrollRow = 17
ActiveWindow.ScrollRow = 20
ActiveWindow.ScrollRow = 23
ActiveWindow.ScrollRow = 26
ActiveWindow.ScrollRow = 28
ActiveWindow.ScrollRow = 31
ActiveWindow.ScrollRow = 34
ActiveWindow.ScrollRow = 36
ActiveWindow.ScrollRow = 39
ActiveWindow.ScrollRow = 42
ActiveWindow.ScrollRow = 46
ActiveWindow.ScrollRow = 50
ActiveWindow.ScrollRow = 55
ActiveWindow.ScrollRow = 60
ActiveWindow.ScrollRow = 66
ActiveWindow.ScrollRow = 72
ActiveWindow.ScrollRow = 76
ActiveWindow.ScrollRow = 80
ActiveWindow.ScrollRow = 84
ActiveWindow.ScrollRow = 87
ActiveWindow.ScrollRow = 89
ActiveWindow.ScrollRow = 91
ActiveWindow.ScrollRow = 93
ActiveWindow.ScrollRow = 95
ActiveWindow.ScrollRow = 97
ActiveWindow.ScrollRow = 99
ActiveWindow.ScrollRow = 102
ActiveWindow.ScrollRow = 104
ActiveWindow.ScrollRow = 107
ActiveWindow.ScrollRow = 109
ActiveWindow.ScrollRow = 112
ActiveWindow.ScrollRow = 114
ActiveWindow.ScrollRow = 117
ActiveWindow.ScrollRow = 120
ActiveWindow.ScrollRow = 121
ActiveWindow.ScrollRow = 124
ActiveWindow.ScrollRow = 126
ActiveWindow.ScrollRow = 127
ActiveWindow.ScrollRow = 129
ActiveWindow.ScrollRow = 131
ActiveWindow.ScrollRow = 133
ActiveWindow.ScrollRow = 134
Range("F2:F151,O2:O151").Select
Range("O2").Activate
Selection.NumberFormatLocal = "0??0#!E01" '這一行可以讓E抓的到
作者:
准提部林
時間:
2019-6-6 09:38
將F欄設為[文字]格式, 重新輸入5457001E01
作者:
jeffrey628litw
時間:
2019-6-6 14:13
回復
4#
准提部林
准大阪主您好:
我剛剛有照您說的試過,但仍然不行,比對後結果為 5.46E+07 ,但儲存格實際是5470010,就覺得很奇怪。
我也不確定是不是版本的問題,我是Excel 2007年版。
另外這種裡面都是數字只有一碼是E放在倒數第3或4碼好像就會有這種問題。
還是可以請問為什麼這個檔案撈出的結果就可以產生正確的結果呢?
如果要改VBA 程式碼,要如何改到1F的檔案中呢?
煩請不吝賜教,謝謝。
[attach]30783[/attach]
[attach]30784[/attach]
[attach]30782[/attach]
作者:
准提部林
時間:
2019-6-6 17:30
MsgBox [Sheet1!B18] & " " & [Sheet2!B9]
兩個一樣的,
撈資料前, 要先將儲存格設為文字格式~~
作者:
jeffrey628litw
時間:
2019-6-6 18:11
回復
6#
准提部林
版主准大您好:
我有照您說的試過,但仍然不行,比對後結果為 5.46E+07 (如圖1) ,但儲存格實際是5470010 (如圖2)(這是轉換為文字後就變成這樣少了E後面幾碼)
不好意思,一直麻煩您。
[attach]30787[/attach]
[attach]30788[/attach]
作者:
mistery
時間:
2019-6-6 18:50
本帖最後由 mistery 於 2019-6-6 18:52 編輯
設定該選取範圍為文字格式 --> Selection.NumberFormatLocal =@
或是取值當下就給予 文字格式 --> Cstr (取回的值 )
作者:
jeffrey628litw
時間:
2019-6-6 19:11
回復
8#
mistery
Selection.NumberFormatLocal = " @ "
或以下
Selection.NumberFormatLocal = Chr(64)
這2個都試過不行!!
作者:
n7822123
時間:
2019-6-6 22:33
本帖最後由 n7822123 於 2019-6-6 22:40 編輯
回復
9#
jeffrey628litw
我在你的程式最下面,倒數第2列加入以下程式,問題就解決了!
Columns("F:F").NumberFormatLocal = "@"
在執行中你的程式有一段程式是做貼上的動作,應該有貼到別格的格式,
所以執行過程中,才會變成科學記號,只要最後換成文字就可以了!
[attach]30796[/attach]
作者:
jeffrey628litw
時間:
2019-6-7 08:35
回復
10#
n7822123
n7822123 大您好:
這部分有解決 格式的問題,不過出來的結果仍然不正確,5457001E01 仍然會變成剩下 54571010。
作者:
准提部林
時間:
2019-6-7 10:00
回復
11#
jeffrey628litw
Sheets("比對OE No後資料").UsedRange.Clear 'Clear會使儲存格恢復為[通用]格式
Sheets("比對OE No後資料").Range("F:F").NumberFormatLocal = "@" '加入這一行, 設為[文字]格式
Sheets("比對OE No後資料").[a1].Resize(UBound(Ax, 1), UBound(Ax(1))) = Application.Transpose(Application.Transpose(Ax))
作者:
jeffrey628litw
時間:
2019-6-7 11:09
回復
12#
准提部林
版主准大您好:經過測試已經可以使用,原來我不應該將 Range("F:F").NumberFormatLocal = "@" 加到錄製巨集後,
在修改儲存格格式,而是要在一開始就修改,感謝您的指導,也謝謝其他先進的指導。
作者:
n7822123
時間:
2019-6-7 14:43
本帖最後由 n7822123 於 2019-6-7 14:47 編輯
回復
13#
jeffrey628litw
因為你是錄製的程式,很懶得看是哪一列程式改變了你的格式
錄製巨集的時候,盡量要小心,貼上可以用
選擇性貼上>值
就可以避免複製到儲存格格式,當然 學會VBA 是更好的選擇 :)
作者:
jeffrey628litw
時間:
2019-6-7 15:08
回復
14#
n7822123
好的,謝謝大大的指導,感恩。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)