返回列表 上一主題 發帖

[發問] INDIRECT後取值

回復 3# n7822123


    十分感謝,  可以自動取工作表名稱了 !

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 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

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