返回列表 上一主題 發帖

[發問] 請問如何將偶數列的文字轉成數值(已有基本語法 但不會組合)

[發問] 請問如何將偶數列的文字轉成數值(已有基本語法 但不會組合)

各位大大好

小弟近期開始使用VB程式

因為是以需求導向為主 現在多用錄製巨集在去修改

現在希望能將偶數列的文字(是數字)轉成數值(可以加總的類型)

目前是用土法煉鋼法選取偶數列  Range(" 2:2,4:4,6:6 ").select

爬文了解使用函數 =mod(row(),2)=0 可以一次選取偶數列

轉換數值的語法   Range("2:2,4:4,6:6').NumberFormatLocal = "G/通用格式"

到這邊小弟就卡關了 不知道是否有解決方法

謝謝

1.試著加一個 Column ,把偶數 Row 排序在一起。
2.把排在一起的 Row 內容化為值

TOP

回復 1# HCG10G8bear

你先用你的方式讓他選擇好內容後,再下面key:

Selection.NumberFormatLocal = "G/通用格式"
Selection = Selection.Value

這樣就行了。

TOP

Sub addp_2()
Dim i As Integer, j As Integer
j = Range("A1").End(xlToRight).Columns
For i = 2 To Range("A1").End(xlDown).Row Step 2
Cells(i, j + 1) = WorksheetFunction.Sum(Range(Cells(i, 1), Cells(i, j)))
Next
End Sub
這樣可以吧試看看

TOP

先謝謝各位大大的回覆

Baracuda及owen06大大的方法好像是類似的

我會盡快試試看

tpwhdavid大感謝您不吝將程式碼直接寫出來給我

我會去試試看的

如果有問題會在詢問各位

謝謝大家

TOP

回復 4# tpwhdavid

tpwhdavid大大您好

我執行您提供的語法

出現"溢位"的問題提示框

不知道出了什麼問題

我想我還是把檔案上傳請大大看一下好了

TOP

各位大大好

我將檔案上傳了

先解釋一下碰到的問題

D2:J2,D4:J4..............D52:J52

這些儲存格的數字皆無法計算(已使用儲存格格式→數字→數值,依然沒用)

必須使用NumberFormatLocal = "G/通用格式" 的語法才能轉成可計算的數值

先前已有先用mod(row(),2)=0 的語法選取偶數列去做文字轉述值的變換

但碰到D2:J2.....D52:J52的儲存格沒有數字時,會將A2,A4.....A52的值帶入空缺的儲存格

現在想改成直接選取D2:J2,D4:J4,........D52:J52

並作文字轉述值的動作

想請問各位大大該如何執行

謝謝各位的幫忙

感激不盡

偶數列特定儲存格.zip (3.41 KB)

TOP

回復 7# HCG10G8bear

改這樣子就行了
Sub TEST()
For I = 2 To UsedRange.Rows.Count Step 2
Cells(I, 4).Resize(1, 7).NumberFormatLocal = "G/通用格式"
Cells(I, 4).Resize(1, 7) = Cells(I, 4).Resize(1, 7).Value
Next
End Sub

TOP

本帖最後由 HCG10G8bear 於 2013-11-5 08:59 編輯
回復  HCG10G8bear

改這樣子就行了
Sub TEST()
For I = 2 To UsedRange.Rows.Count Step 2
Cells(I, ...
owen06 發表於 2013-11-4 13:31


owen06大大 謝謝您的回覆

按照您的程式確實可以執行

但您的程式我有點不懂 希望您釋疑

For Next 是執行迴圈的函數

Sub TEST()
For I = 2 To UsedRange.Rows.Count Step 2                     
Cells(I, 4).Resize(1, 7).NumberFormatLocal = "G/通用格式"   
Cells(I, 4).Resize(1, 7) = Cells(I, 4).Resize(1, 7).Value        
Next
End Sub

'從第二列開始的偶數列 延伸到有使用的儲存格到最後一列  count step 2 不懂是什麼
'Cells(I,4)是儲存格D2 Resize不知道為何 將(1,7)改為(1,20)即可將數值化D2往右延伸
'轉換文字的數字成數值化的數字

請問我這樣解釋哪裡有問題?不懂的地方還請大大指導

謝謝大大不吝教導

真的非常感謝您 省了我好多的時間

TOP

回復 9# HCG10G8bear


    UsedRange.Rows.Count=使用的範圍.列數.計算
   
    step 2 = 每一次跳二階
    for i = 1 to 10 , i 會是1到10的連續數
    for i = 1 to 10 step 2,i 會是 1、3、5、7、9
    for i = 1 to 10 step 3,i 會是 1、4、7、10
    這樣應該很明暸吧。
    因為你都是偶數列要執行動作,所以就從第2列開始,
    每一次跳2階,第2列~第4列~第6列,
    一直到UsedRange.Rows.Count所計算出來的那一列為止,
    就不會因為設的範圍太大而浪費執行的時間。

    RESIZE=以某個儲存格為基準點來選取範圍   
    [a1].resize(1,1).select     選擇範圍為a1為基準點的1列及1行,選取結果為a1
    [a1].resize(10,10).select  選擇範圍為a1為基準點的10列及10行,選取結果為a1:j10

TOP

        靜思自在 : 虛空有盡.我願無窮,發願容易行願難。
返回列表 上一主題