想要讓不同工作表間能夠連動(匯入總表)

匿名
2024-12-03T01:34:39+00:00

各位好,小弟又遇到了一個問題,隨著工作負責度上升,一個工作日誌的存在已經不可或缺,但是手動輸入會有失誤的產生,遂:

工作表1為“總表”。

工作表2為“客戶1”。

工作表3為“客戶2”。

工作日誌最重要的就是時序,也就是排列的問題。

EX:我在工作表2的A1輸入值(聯絡某某客戶),接著在工作表2的A1輸入值(寄信給某人),再於工作表2的A2輸入值(繳費給某某)

希望達成的效果是在總表(工作表1)自動顯示為:

A B C D E
1 客戶1 聯絡某某客戶
2 客戶2 寄信給某人
3 客戶1 繳費給某某

如各位所見,我還同時希望將工作表的名稱顯示在總表A行,因此似乎有點複雜,但是在我的檔案設定中A行是本身就是一個下拉式清單,而清單的設定本來也就是工作表的名稱,因此這部分的問題並不是特別重要。

(也就是說如果這個問題有解的話,究竟是要於總表作業匯入其他工作表,還是選擇反之都沒有問題,僅僅是工作方式的選擇。)

我想克服的問題就只有如何讓資料匯入的時候照順序排列而已。請問這是可能的嗎?

Microsoft 365 與 Office | Excel | 家用版 | Windows

鎖定的問題。 此問題已從 Microsoft 支援服務社群移轉。 您可以對其是否有幫助進行投票,但無法對問題新增註解或回覆,或進行追蹤。

0 則留言 沒有留言
由問題作者接受的回答
匿名
2024-12-04T11:00:09+00:00

你好,張書櫃

您可以使用此代碼來分佈總表中的資料:

Sub DistributeTasks()

    Dim summaryWs As Worksheet

    Dim ws As Worksheet

    Dim lastRow As Long

    Dim i As Long

    Dim targetWs As Worksheet

    Dim targetRow As Long

    Set summaryWs = ThisWorkbook.Sheets("總表")

    lastRow = summaryWs.Cells(Rows.Count, 1).End(xlUp).Row

    For Each ws In ThisWorkbook.Worksheets

        If ws.Name <> "總表" Then

            ws.Range("A1:B" & ws.Cells(Rows.Count, 1).End(xlUp).Row).ClearContents

        End If

    Next ws

    For i = 1 To lastRow

        On Error Resume Next

        Set targetWs = ThisWorkbook.Sheets(summaryWs.Cells(i, 1).Value)

        On Error GoTo 0

        If Not targetWs Is Nothing Then

            targetRow = targetWs.Cells(Rows.Count, 1).End(xlUp).Row + 1

            targetWs.Cells(targetRow, 1).Value = targetRow

            targetWs.Cells(targetRow, 2).Value = summaryWs.Cells(i, 2).Value

        End If

    Next i

End Sub

在總表中輸入內容,然後執行。

希望以上資訊能幫到您。如果您需要進一步幫助,請隨時發送消息。

最美好的祝願

Aiden.C - MSFT |Microsoft社群支援專家

此回答有幫助嗎?

有 1 人認為此回答有所幫助。
0 則留言 沒有留言
由問題作者接受的回答
匿名
2024-12-03T09:19:53+00:00

你好,張書櫃

歡迎來到微軟社區。

您可以使用 VBA 來解決自動總結不同工作表之間的資料,並按時間順序排列的問題,以下是我根據您的描述所做的步驟,如有錯誤,請指出:

步驟 1: 建立工作表

  1. 建立工作表
    • 打開 Excel,新建一個工作簿。
    • 建立三個工作表,分別命名為「總表」、「客戶1」和「客戶2」。

步驟 2: 輸入數據

  1. 在「客戶1」工作表中輸入數據
    • 在 A1 輸入:「聯絡某某客戶」
    • 在 A2 輸入:「繳費給某某」
  2. 在「客戶2」工作表中輸入數據
    • 在 A1 輸入:「寄信給某人」

步驟 3: 設置 VBA 宏

  1. 打開 VBA 編輯器
    • 按下 Alt + F11 打開 VBA 編輯器。
  2. 插入新模組
    • 在 VBA 編輯器中,點擊 Insert > Module。
  3. 輸入以下代碼: Sub UpdateSummary()     Dim ws As Worksheet     Dim summaryWs As Worksheet     Dim lastRow As Long     Dim summaryRow As Long     Dim i As Long     ' 設置總表工作表     Set summaryWs = ThisWorkbook.Sheets("總表")     summaryRow = 2 ' 總表中數據開始的行     ' 清除總表中的現有數據     summaryWs.Range("A2:E" & summaryWs.Cells(Rows.Count, 1).End(xlUp).Row).ClearContents     ' 遍歷每個工作表     For Each ws In ThisWorkbook.Worksheets         If ws.Name <> "總表" Then             ' 找到當前工作表中有數據的最後一行             lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row             ' 複製數據到總表             For i = 1 To lastRow                 summaryWs.Cells(summaryRow, 1).Value = ws.Name                 summaryWs.Cells(summaryRow, 2).Value = ws.Cells(i, 1).Value                 summaryRow = summaryRow + 1             Next i         End If     Next ws End Sub
  4. 保存並關閉 VBA 編輯器
    • 點擊 File > Close and Return to Microsoft Excel。

步驟 4: 執行宏

  1. 執行宏
    • 按 Alt + F8,選擇 UpdateSummary,然後點擊 Run。

檢查結果

  • 打開「總表」工作表,你應該會看到如下數據:

注意事項

  • 每次在「客戶1」和「客戶2」中更新數據後,需重新執行宏以更新「總表」。
  • 確保每個工作表的名稱正確,以便宏能正確識別。

希望以上資訊能幫到您。如果您需要進一步幫助,請隨時發送消息。

最美好的祝願

Aiden.C - MSFT |Microsoft社群支援專家

此回答有幫助嗎?

有 1 人認為此回答有所幫助。
0 則留言 沒有留言

10 個其他答案

排序依據: 最實用
  1. 匿名
    2024-12-07T15:14:58+00:00

    你好,張書櫃

    因为线程过多,为了方便查看,我将线程分离了出去,你可以查看这个线程:

    能不能讓程式偵測【工作表"總表"中的D行內的值】符合【工作表"案件清單"中的哪一個儲存格內的值】,並將【工作表"案件清單"符合的儲存格的右側 - Microsoft 社群

    最美好的祝願

    Aiden.C - MSFT |Microsoft社群支援專家

    此回答有幫助嗎?

    0 則留言 沒有留言