Board logo

標題: [發問] 想請教有關插入欄的問題 [打印本頁]

作者: skyutm    時間: 2013-1-8 20:41     標題: 想請教有關插入欄的問題

各位先進大家好!小弟有一個問題想請教,小弟曾經看過別人寫的excel檔,也是有關計算成績的軟體,結構如下
標題標題標題標題標題標題標題標題標題標題標題標題標題標題標題標題標題標題標題標題標題標題標題標題
ABCDEFG H
ABCDEFG H
ABCDEFG H
ABCDEFG H
ABCDEFG H
ABCDEFG H
ABCDEFG H
ABCDEFG H
其中A到G都是分數而H是平均值,而標題上有個巨集按鈕,可以在G後面再新增一整欄,可以一直新增,小弟的問題來了。原本我也是照著模仿,但是一旦新增,H欄的原來編號就會改變(例如A8變成A9)那麼我的整個語法就會跑掉,請問有何設定可以固定,或是有其他的變通方法?謝謝。
作者: Hsieh    時間: 2013-1-8 21:35

回復 1# skyutm


    不懂
原來編號就會改變(例如A8變成A9)那麼我的整個語法就會跑掉
是甚麼意思?
做個檔案上傳看看吧!
作者: skyutm    時間: 2013-1-8 22:17

回復 2# Hsieh
不好意思!我沒說清楚,就是原本我的平均是在G這一欄,按下新增一欄後,我的平均欄位就會變成H,可是我其他的工作表的語法是預設G這一欄,到時候語法會顯示錯誤,找不到平均成績![attach]13850[/attach]
作者: Hsieh    時間: 2013-1-8 22:28

回復 3# skyutm
那要看你其他工作表的公式是怎麼寫的?
或是你要找平均欄位不知如何變動?
這可利用定義名稱
例如:你將Sheet1!$G$1設定名稱為平均
那麼不論式VBA或公式都可使用此名稱來定位

[attach]13851[/attach]
作者: skyutm    時間: 2013-1-10 18:23

回復 4# Hsieh
版大!不好意思再打擾一下,關於檔案裡面的語法:
Sub Macro1()
    Range("D2").Select
    Selection.EntireColumn.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    MsgBox "平均值在" & [平均].Address
End Sub
重點是不是在這裡:[平均].Address,這裡就可以鎖定名稱是平均的欄位,但是我做了一個實驗,我在其他欄位也輸入平均,可是結果也是原來正確的那一欄,再次請教這語法的用法?謝謝。
作者: Hsieh    時間: 2013-1-10 22:40

回復 5# skyutm
平均那個位置的公式在插入欄位後會自動調整擴大參照範圍
所以,只要定位了這個儲存格,不管這中間插入幾欄,都會自動將插入的儲存格算入平均
作者: skyutm    時間: 2013-1-11 21:00

回復 6# Hsieh
版大!不好意思,我沒說清楚,我的意思是如果有很多欄位的名稱都叫做「平均」呢,那電腦怎知要找哪一個?
作者: stillfish00    時間: 2013-1-11 21:26

回復 7# skyutm
"定義名稱"請到
選單>公式>名稱管理員查看

跟你儲存格欄位名稱沒有關係
作者: skyutm    時間: 2013-1-12 12:23

回復 8# stillfish00
感謝大大解惑!小弟受用了。
作者: skyutm    時間: 2013-1-13 22:24

回復 6# Hsieh
版大!不好意思,又來打擾,小弟未能舉一反三,有些慚愧,問題如下:
自從上次受教之後,小弟改寫語法如下,
Sub Macro1()
    Range("D2").Select
    Selection.EntireColumn.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    Dim a, b As String
     b = [平均].Address
     a = Mid(b, 2, 1)
    MsgBox a
End Sub
後面這一段是要知道(平均)欄位的位置開頭英語稱號,例如(d1)的d,因為在其他工作表有迴圈要寫,例如
With Sheets("期中評量")
    j = Sheets("基本設定").Range("j3").Value + 5
    For i = 6 To j
    Sheets("期中成績").Range("c" & i).Value = (.Range("c" & i - 3) * ch1 + .Range("h" & i - 3) * ch2 + .Range("i" & i - 3) * ch3 + .Range("j" & i - 3) * ch4) / 100
    Sheets("期中成績").Range("d" & i).Value = (.Range("d" & i - 3) * en1 + .Range("k" & i - 3) * en2 + .Range("l" & i - 3) * en3 + .Range("m" & i - 3) * en4) / 100
    Sheets("期中成績").Range("e" & i).Value = (.Range("e" & i - 3) * ma1 + .Range("n" & i - 3) * ma2 + .Range("o" & i - 3) * ma3 + .Range("p" & i - 3) * ma4) / 100
    Sheets("期中成績").Range("f" & i).Value = (.Range("f" & i - 3) * na1 + .Range("q" & i - 3) * na2 + .Range("r" & i - 3) * na3 + .Range("s" & i - 3) * na4) / 100
    Sheets("期中成績").Range("g" & i).Value = (.Range("g" & i - 3) * so1 + .Range("t" & i - 3) * so2 + .Range("u" & i - 3) * so3 + .Range("v" & i - 3) * so4) / 100
    Next i
    End With
但是,問題來了,如果欄位一直新增,到了Z之後,就會從AA開始編號,那迴圈就會出問題,懇請解惑,再次感謝!
作者: skyutm    時間: 2013-1-13 22:28

回復 10# skyutm
我之前有想過這樣 b = [平均].Address改成 b = cell(平均).Address但行不通
作者: Hsieh    時間: 2013-1-13 22:43

回復 10# skyutm


    Range("AA" & i)用Cells(i,27)是相同的表示




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)