2015-09-17 101 views
0

我有一些數據,我通過VBA宏從幾個Oracle數據庫轉移到Excel中。一些列有數據(數字),afaik,以文本形式存儲。我需要將這些「錯誤」格式化的數據轉換爲數字,以便我可以對它進行計算,但是我無法弄清楚如何有效地使用VBA來實現這一點。此外,只有部分數據以文本形式存儲(列K-Q格式不正確,請參見下圖)。將存儲爲文本的數據轉換爲數字(Oracle SQL)

目前即時通訊使用這個循環將數據轉換:

Sub convertTextToNumbers(ByVal sColumnHeader As String) 
    Dim col As Range, c As Range 
    Dim colIndexNumber As Integer, lastUsedRow As Integer 

    colIndexNumber = findColumnIndexNumber(sColumnHeader) 

    lastUsedRow = ActiveSheet.Cells(Rows.Count, colIndexNumber).End(xlUp).Row 

    Set col = Range(Cells(2, colIndexNumber), Cells(lastUsedRow, colIndexNumber)) 

    For Each c In col 
     c.Value = c.Value 
    Next c 
End Sub 

這是做的最有效的方法是什麼?我可以使用SQL進行轉換嗎?使用SQL查詢即可:

SELECT * FROM table_name 

另外通過選擇另一種格式轉換不起作用。

謝謝!


數據錯誤格式化爲列K-問:在列

http://i.stack.imgur.com/N93D8.png

+2

使用to_number sql函數轉換所需的列。 – OldProgrammer

+0

只是想知道爲什麼你不建立一個ODBC連接並在Excel中使用它? – user206168

+0

K-N中的格式應該是什麼? – MatthewD

回答

1

使用數字格式。

Columns("K:Q").Select 
Selection.NumberFormat = "0.00" 

或者更綱領性

Private Sub formatNumbers() 
    Dim ws As Excel.Worksheet 

    Set ws = Application.ActiveSheet 
    ws.Range("K:Q").NumberFormat = "0.00" 

End Sub 

您在範圍格式菜單中看到的任何格式,可以用這種方式被應用。

enter image description here

+0

這很遺憾不起作用 –

+0

在將值寫入單元格之前,您正在應用它嗎? – MatthewD

+0

之後不會應用 –