我直接幫你整埋教埋你點問
https://docs.google.com/spreadsheets/d/1VdsyYexfr_-I0axJe2lsRyu_1zkEgomg/
SCRIPT只係加左Application.DisplayAlerts = False & Application.DisplayAlerts = True
因為AI冇咁醒目
Sub CopyAndSave()
Dim wsA As Worksheet
Dim wsB As Worksheet
Dim wbNew As Workbook
Dim rng As Range
Dim path As String
Dim newName As String
Application.DisplayAlerts = False
Set wsA = ThisWorkbook.Sheets("SHEET_A")
Set wsB = ThisWorkbook.Sheets("SHEET_B")
path = ThisWorkbook.path & "\"
For Each rng In wsB.Range("A2:A" & wsB.Cells(wsB.Rows.Count, "A").End(xlUp).Row)
wsA.Range("D3").Value = rng.Value
wsA.Range("F3").Value = rng.Offset(0, 1).Value
newName = wsA.Range("D3").Value & wsA.Range("F3").Value
Set wbNew = Workbooks.Add
wsA.Copy Before:=wbNew.Sheets(1)
wbNew.Sheets(1).Name = newName
' 新增的部分:將公式儲存為值
wbNew.Sheets(1).UsedRange.Value = wbNew.Sheets(1).UsedRange.Value
wbNew.SaveAs path & newName & ".xlsx"
wbNew.Close SaveChanges:=False
Next rng
Set wsA = Nothing
Set wsB = Nothing
Set wbNew = Nothing
Application.DisplayAlerts = True
End Sub
用VBA做以下內容
我有1個EXCEL檔案, SHEET_A是一個表格, SHEET_B是人員資料(第1個ROW是HEADER, 分別是ID, name, age, birth date), 現在我想將SHEET_B的ID(即COLUMN A)每個儲存格分別複製到SHEET_A的D3儲存格, 然後SHEET_A複製到1個新的EXCEL檔, SHEET和檔案名以D3+F3(F3是NAME)的值命名, 儲存路徑是當前目錄
要使用VBA完成您的需求,你可以遵循以下步驟:
切換到SHEET_B並複製ID;
切換到SHEET_A並將ID粘貼到D3;
將SHEET_A保存為新的Excel文件,文件名和表名根據D3+F3的值命名。
以下是完成這個任務的VBA代碼:
Copy
Sub CopyAndSave()
Dim wsA As Worksheet
Dim wsB As Worksheet
Dim wbNew As Workbook
Dim rng As Range
Dim path As String
Dim newName As String
Set wsA = ThisWorkbook.Sheets("SHEET_A")
Set wsB = ThisWorkbook.Sheets("SHEET_B")
path = ThisWorkbook.Path & "\"
For Each rng In wsB.Range("A2:A" & wsB.Cells(wsB.Rows.Count, "A").End(xlUp).Row)
wsA.Range("D3").Value = rng.Value
wsA.Range("F3").Value = rng.Offset(0, 1).Value
newName = wsA.Range("D3").Value & wsA.Range("F3").Value
Set wbNew = Workbooks.Add
wsA.Copy Before:=wbNew.Sheets(1)
wbNew.Sheets(1).Name = newName
wbNew.SaveAs path & newName & ".xlsx"
wbNew.Close SaveChanges:=False
Next rng
Set wsA = Nothing
Set wsB = Nothing
Set wbNew = Nothing
End Sub
請注意,該代碼假設SHEET_B的ID列有一行標題,因此從A2開始遍歷。此外,該代碼會將F3設置為ID同行的name字段(即ID右側的單元格),並將其添加到文件名和表名中。
要運行上述VBA代碼,您需要在Excel中開啟開發者工具(如果尚未開啟,可以通過“文件”->“選項”->“自定義功能區”->勾選“開發人員”來開啟),然後打開VBA編輯器(快捷鍵Alt+F11),在VBA編輯器中插入一個新的模塊,並將上述代碼貼入新模塊中,最後運行即可。
請注意,VBA編程涉及到較多的高級操作,如果對VBA不熟悉,操作時請謹慎。
另外,您的問題描述中並未涉及到資料集內容以及 <img src=""> 標籤的相關內容,所以本次回答中並未包含圖片展示。
我忘記了說, 最後儲存EXCEL檔前, 要將表格的公式儲存為值
理解了,若要在保存Excel檔案之前,將表格中的公式保存為值,可以在VBA程式中增加一段程式碼來實現此操作。具體的程式碼如下:
同上面代碼一樣+下面
...
wbNew.Sheets(1).Name = newName
' 新增的部分:將公式儲存為值
wbNew.Sheets(1).UsedRange.Value = wbNew.Sheets(1).UsedRange.Value
wbNew.SaveAs path & newName & ".xlsx"
...
在這個程式碼中,我在每次創建新的Excel檔之前,用一行程式碼 wbNew.Sheets(1).UsedRange.Value = wbNew.Sheets(1).UsedRange.Value 將表格中所有已使用的範圍的公式轉換為值。
這樣在儲存新的Excel檔案之前,表格中所有的公式都會被轉換為對應的值,而不再是公式。
同樣,您的問題描述中並未涉及到資料集內容以及 <img src=""> 標籤的相關內容,所以本次回答中並未包含圖片展示。