close

http://xiaolabadiy.tumblr.com/post/62498906936/excel

 

 

上次的題目, EXCEL - 如何將數字轉變成文字,
http://hk.myblog.yahoo.com/xiao-laba/article?mid=802

 

上次的題目, EXCEL - 如何將數字轉變成文字,
http://xiaolaba.pixnet.net/blog/post/257336993



這次的題目剛好要反過來操作.

有人問, 為什麼我看到的明明就是數字, 可是 EXCEL 裡面要她加總 SUM, 結果卻顯示 0 ?

原 因是很多寫軟件的 [高手], 尤其是書念好多, 字卻沒忍得幾個之流, 例如他們看的書可能都是蛇貓狗, 或是東急, 地牢等等, 裡面都有精美的妹妹胴體圖片, 文字的數量就……..他們寫的軟體, 特別是資料庫導出來的資料表, 通常都不顧使用人的需要, 隨便用人眼看到像數字就結案…結果……電腦是幫人的工具, 最後淪為 [數位相框], 台灣同胞, 特別是某些 [世界第一體積龐大的大公司] 裡面的台灣同胞, 真是讓台灣同胞全體沉淪到………….. 善哉善哉, 幾年都不願意改善…..




小姐又在哇哇大叫....什麼 [鳥世界第一大的公司, 狗屁.....], 咒罵完還是要自求多福, DIY 有必要. 除非願意手工餅乾, 一個一個自己改正.....廢話, 白痴或愚公移山, 今天都不應該這樣亂來.

簡單描述這個 EXCEL MACRO 的用途

1) 文字格式的數目轉變成 EXCEL 認得, 可以加總的數字
2) 去除文字首尾的多餘空格
3) 去除多餘的 0
.....還沒想到....

真是希望那些 [大的公司的高手們], 有心作好本份....................人貴自知


copy the below------------------

Sub TEXT_NUMBER()
'
' TEXT_NUMBER Macro
'  xiao_laba@yahoo.com.cn 在 3/6/2010 的巨集
'

Dim row As Integer
Dim col As Integer

Dim temp As Integer

    'EXCEL, 選整個 SHEET, 格式化, 等同[儲存格格式], [數值] [G/通用格式]
    Cells.Select
    Selection.NumberFormatLocal = "General"

    '計算 EXCEL SHEET 內包含資料的 行 x 列
    最大的行號 = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).row
    最大的列號 = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column


    row = 1
    col = 1   '設定從最左上角的地一個開始
   
   
    Do While col <= 最大的列號
         
   
        '在右邊插入空白列
        Columns(col + 1).Select
        Selection.NumberFormatLocal = "General" '必須設定格式為"通用", 否則插入的列可能將數字看成是文字
        Selection.Insert Shift:=xlToRight
       
        '禁止螢幕更新, VBA 處理資料時不閃爍, 可不用但速度變慢
        Application.ScreenUpdating = False
   
   
        Do While row <= 最大的行號
           
            '點選每列的第一格
            Cells(row, col).Select
                       
            If IsNull(ActiveCell) Then ActiveCell = ""  '某些CELL看似空白 ,但寫入公式會錯誤, 所以加入這行
            If IsEmpty(ActiveCell) Then ActiveCell = "" '某些CELL看似空白 ,但寫入公式會錯誤, 所以加入這行
            ActiveCell = Trim(ActiveCell.Value)         '不論格式, 先去除每格資料的頭尾的空格
           
            '檢查存儲格的內容是否包含純數字 (包括有單引號開頭的文本格式的數字)
            If IsNumeric(ActiveCell) Then
           
                '純數字的話, 右面的存儲格套入公式 X 1, 文字格式的數目就轉換成EXCEL認得的數字, 只存整數部份
                ActiveCell.Offset(0, 1) = "=RoundUp(RC[-1]*1,0)"
                ActiveCell.Offset(0, 1) = ActiveCell.Offset(0, 1).Value '去除公式, 只存結果
                ActiveCell.Offset(0, 1).NumberFormatLocal = "General"   '
                If ActiveCell.Offset(0, 1) = 0 Then ActiveCell.Offset(0, 1) = "" '如果 = 0, 留空
               
            Else
               
                '如果非純數字, 直接依照文字格式存到右面的存儲格
                ActiveCell.Offset(0, 1) = ActiveCell.Value
           
            End If
           

            '移到下一格
            row = row + 1
          
        Loop    '不斷的重複以上的動作, 直到該列的最後一行
       
       
        '完成了這一列, 需要刪除此列, 並移到下一列, 第一行
        Columns(col).Select
        Selection.Delete Shift:=xlToRight   '刪除此列
        row = 1 '指向第一行
        col = col + 1   '指向下一列
        Cells(row, col).Select  '點選指向的 CELL
       
       
        '回覆螢幕更新, VBA 處理資料時會閃爍, 可不用但速度變慢
        Application.ScreenUpdating = True

   
    Loop        '不斷的重複一上的動作, 直到最後一列
   
   
    '完成處理整個 EXCEL SHEET 的資料後, 點選最左上角的 CELL
    Cells(1, 1).Select

End Sub




copy the above------------------

arrow
arrow
    全站熱搜

    xiaolabaDIY 發表在 痞客邦 留言(0) 人氣()