看板 Office 關於我們 聯絡資訊
※ 引述《poeta (鍵盤詩人)》之銘言: : 軟體:excel : 版本:13 : 不好意思,標題表達的不好,我的報表是這樣 : A的年薪 B的年薪 C的月薪 : 95年 100 105 9 : 96年 120 100 10 : 97年 105 89 9 : A跟B的原始資料都是年薪,偏偏C的是月薪。 : 假如我把C的標題改成 C的月薪(年薪) : 底下的資料能否變成 9(108) 10(120) 9(108) : 其中108、120、108,不是單純手輸,是要自動運算。 : 當然我有兩個解決方法,一個是手輸入。 : 另一個是乾脆不要月薪的資料,直接把C的那列改成年薪,這樣問題也能解決。 : 我只是問問能否如此呈現。 練習一下巨集 我還是小嫩嫩 Sub test() Dim Kx As Range, yy As Range Dim col1 As Integer Set Kx = Sheets("test").Range("A1:A" & Range("A1").End(xlDown).Row) col1 = Range("A1").End(xlToRight).Column - 1 For i = 1 To col1 For Each yy In Kx.Offset(0, i) If IsNumeric(yy) And InStr(Kx.Offset(0, i).Rows(1), "月薪") > 1 Then yy.Value = yy & "(" & yy.Value * 12 & ")" End If Next Next i End Sub -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.67.78 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1539652757.A.696.html
newacc: 你的for each yy那邊是有問題的 10/16 09:46
newacc: 1.kx.offset()只會有一個格子,不需要用for each loop 10/16 09:47
newacc: 2.現有kx.offset寫法只會在A欄中執行 10/16 09:48
newacc: 嗯,用手機有點難review,等等用電腦整理一下 10/16 09:49
soyoso: 因變數kx有要取得a1起連續範圍的資料 10/16 10:03
soyoso: 所以kx.offset()應是不會只有一個格子,所以以for each迴 10/16 10:04
soyoso: 圈是可行的 10/16 10:04
soyoso: 且kx.offset要配合迴圈i值來做欄偏移,也不會只有在a欄執 10/16 10:06
soyoso: 行 10/16 10:07
soyoso: 該寫法也不會執行於a欄,因為i起始值為1,執行上也是b欄起 10/16 10:08
soyoso: 執行 10/16 10:09
newacc: 對,對不起是我看錯0rz 10/16 10:09
soyoso: p大寫法用於原文資料內測試應是可行的,只需於a1處填上標 10/16 10:12
soyoso: 題資料,讓變數kx來抓取a1:a4,如無的話原文資料上則會抓 10/16 10:13
soyoso: a1:a2,這方面xldown或xlup可互用看看 10/16 10:15
ptguitar: 感謝大大們的指點 10/16 10:19
ptguitar: 如果A1沒資料 那往右邊的最後一欄位要怎麼寫.. 10/16 10:23
soyoso: 儲存格的話 [xfd1].end(xltoleft) 欄號的話加column 10/16 10:25
ptguitar: 真神 感謝S大 10/16 10:28
soyoso: 如使用上不限2003,2007以上格式 cells(1,columns.count) 10/16 10:31
soyoso: 來取得iv1或xfd1最右側欄號儲存格 10/16 10:33
newacc: 我會建議把Instr判斷放在for each外面,可以省一些時間 10/16 10:36
poeta: 好難喔 QQ 10/17 21:51