返回列表 上一主題 發帖

[發問] INDIRECT後取值

本帖最後由 n7822123 於 2020-5-28 12:45 編輯

回復 1# yc1031


第二步, 在C3~G1000欄位裡帶入分別的工作表資料, 用INDIRECT不成功

要用單引號 ' 把Sheet名子 包起來 在加 驚嘆號 !

C3:=IF(INDIRECT("'"&$C$1&"'!"&ADDRESS(ROW()+1,COLUMN()-1))="","",INDIRECT("'"&$C$1&"'!"&ADDRESS(ROW()+1,COLUMN()-1)))  

右拉下拉



第三步, 在貼入值區, 把C3~G1000的"值", 貼上到J3~P1000, 貼入值不成功

Range("J3:P1000") = Range("A3:G1000").Value

如果你第3步貼上的值是要一直往下累加的貼,而不是覆蓋原本資料的話

那第2步也不建議用函數做,統一用巨集做會比較好

(只要儲存格有函數,不論有無數值,對於巨集 End 方法來說,都是有值)
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2020-5-28 13:16 編輯

回復 2# n7822123


取工作表名稱區的公式無法自動更正, 有沒有辦法可以自動? (因為日後有可能一直增加工作表)

執行後,V3往下的工作表名稱會更新 (名稱中有"#"才會被列入)
  1. Sub 更新工作表名稱()
  2. Dim ShAll
  3. For Each sh In Sheets
  4.   If InStr(sh.Name, "#") Then
  5.     ShAll = ShAll & "," & sh.Name
  6.   End If
  7. Next
  8. ShAll = Split(Mid(ShAll, 2), ",")
  9. [V3].Resize(UBound(ShAll) + 1) = Application.Transpose(ShAll)
  10. End Sub
複製代碼
如果你想要新增工作表的時候就 "自動執行"

可以在活頁簿事件中,呼叫上面的 程序
  1. Private Sub Workbook_NewSheet(ByVal Sh As Object)
  2.   更新工作表名稱
  3. End Sub
複製代碼
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2020-5-28 14:12 編輯

回復 5# yc1031


謝謝你撥空幫我回答問題

第三步的取值, 是因為我不會用vba, 所以我才想用indirect去帶資料後, 錄vba取值貼到"資料貼入區", 之後再錄vba篩選排序, 弄到總表去
如果可以的話, 也是直接用vba 做第三步, 不曉得是否可以教我怎麼做?
* 我日後會再新增帳戶

用函數再用VBA的 End方法 會有問題的 End(xlUP) = 按住Ctrl + 鍵盤方向箭 向上

你可以做個小實驗,開一個新工作表

在[B2]儲存格 填入公式 B2 =""  (空資料)

手動複製B2儲存格,選擇 A8儲存格 滑鼠右鍵 > 選擇性貼上 > 值

然後選擇 A15 儲存格 (A8以後都行) 按住Ctrl + 鍵盤方向箭 向上  儲存格會停留在A8 不是 A1

雖然A8 看起來沒有人任何東西!  這是Excel 一直有的問題 ,UsedRange也有同樣問題

準備上班去了,你要的第3步不難,

看這裡有沒有人幫你寫,沒有的話我上班回來再幫你

程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

        靜思自在 : 君子立恆志,小人恆立志。
返回列表 上一主題