Board logo

標題: 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/)