Excel VBA 案例 根據出庫訂單生成交貨單 合併同一位址

Mondo 科技 更新 2024-01-30

本文首發於2024年10月10日,收錄於我的同名***Excel Live Learning and Practical Use (VBA Programming Practice),更多文章和案例,請搜尋關注!

陣列、字典。

工作表複製。

行將動態插入到工作表中。

合併工作表中的單元格。

哈嘍大家好,我是冷水泡茶,這兩天在論壇上看到一篇求助帖,要求按照出庫時間表,按照模板生成一張送貨單,同乙個位址合併成一張送貨單。

關於生成發貨單的情況,我們分享了乙個【批量生成發貨單,根據訂單彙總表生成客戶發貨單】,不過今天這個略有不同,一起來看看吧:

這是出站計畫,它是乙個單獨的檔案:

這是要生成的交貨單模板,也是乙個單獨的檔案:

他給的模板裡有很多行,我刪掉了一部分,只留下一行,作為模板,格式是固定的。 當有不止一行資料時,我們會根據需要插入行,以避免空白行。

他的要求是:根據出庫計畫中的位址,根據交貨單的資訊,彙總出庫資料,然後以出庫單號命名,多個出庫單號與-連線。

花了一點時間,終於完成了,所以我分享給大家:

基本思路和實施過程。

1. 設定使用者窗體 userform1,用於選擇出庫計畫、選擇工作表、選擇生成的交貨單儲存資料夾。

2.將啟動表單的命令按鈕放入選單欄“載入項”中,主要原因是如果在模板表中新增命令按鈕,那麼在複製工作表時需要將其刪除,如果新增工作表並放置命令按鈕,則有點鬆動。 所以,這一次我們將嘗試另一種方式。

3.我們點選“附加元件”選項卡,點選“交貨單”,點選“生成”,然後啟動使用者表單userform1。

4. userform1 啟動後,我們選擇檔案,開啟出站詳細資訊檔案,然後選擇正確的工作表。 為了不影響後續操作,我們隱藏開啟的工作表。

set wb = workbooks.open(filepath)wb.windows(1).visible = false
5.選擇儲存路徑,我們點選“生成”按鈕,根據既定要求生成交貨單。

1) 將資料讀入陣列 arr。

2)迴圈陣列arr,以位址為鍵,陣列arrtem作為itme新增到字典dic中。ARRTEM 儲存詳細資料。

3)迴圈字典的鍵,取出專案到arrtem,用“-”作為儲存檔名連線“出庫單號”的第四列。

4)將“交貨單”模板表複製到新的工作簿中,這裡我們直接複製工作表並儲存檔案。

ws.copyset wb = activeworkbookwb.s**eas s**efolder & "\" & filename
(5)根據ARNTEM中的列數插入相應的行,並將ARRTEM資料寫入工作表。

6)設定總計行的彙總公式。

.cells(5 + u + 1, 3).formula = "=sum(" & rng.address & ")"
(7)設定出庫訂單編號列的格式,並將相同的編號單元格合併到中心。

for i = 5 to 5 + u if .單元格(I, 4) 6.工作表排序:在上述單元格合併居中操作中,我們需要連續排列相同的出庫訂單號,否則合併居中的結果可能不符合我們的預期(雖然不會錯),所以在提取資料之前,我們按照出庫訂單號公升序對出庫計畫進行排序。我們需要在兩個地方進行排序操作(乙個是當我們選擇乙個檔案時,會自動選擇第乙個表,另乙個是 cmbsheets 的 change 事件,它選擇工作表),所以我們對多個呼叫做了乙個單獨的排序過程:

private sub sortsheet(ws as worksheet) with ws.sort .sortfields.clear .sortfields.add key:=ws.cells(1, 9), sorton:=xlsortonvalues, order:=xlascending, _dataoption:=xlsortnormal .setrange ws.usedrange .header = xlyes .matchcase = false .orientation = xltoptobottom .sortmethod = xlpinyin .apply end withend sub

不要看他的內容,其實可以錄製乙個自定義排序的巨集。 可以將一些屬性新增到自定義過程的引數中,以使其更適用。

7、資料校驗:我們儲存檔案的時候,是以出庫單號為檔名,資料採集的標準是以位址為依據的,同乙個出庫單可以有不同的位址嗎?然後,檔案可能會被覆蓋,從而導致資料丟失。 因此,在生成交貨單之前,會進行資料檢查,如果同一出庫訂單有多個位址,則該程式將被撤銷。

雖然這種情況不太可能發生,但從寫作的角度來看,必須考慮。 這看起來有點慌亂,但它應該幫助我們擴充套件思維,讓我們更全面地思考。 當然,這肯定會增加工作量。

實際上,出現此問題的原因是他要求以不是 100% 確定它是唯一檔名的方式儲存檔案。

為了解決這個問題,我們可以使用 DIC 的鍵,也就是“位址”,作為檔名,或者在檔名後新增乙個不能重複的隨機數,比如當前時間等。 但是,話又說回來,使用位址作為檔名可能包含不符合檔名要求的字元,這是另一件麻煩的事情。

8、當我準備把檔案發到論壇時,發現房東的需求又變了,他想把“位址”放在“總計”下面。 算了,不要發。 不要改變它,僅此而已。

結束戰鬥!有關完整的**,請參閱第二條推文。

~end~~~

如果你喜歡它,喜歡它,點選它,發表評論,分享它!感謝您的支援!

相關問題答案

    如何開啟 Excel VBA?

    要開啟 Excel VBA,有幾種方法可以嘗試 方法 使用Excel軟體中的VBA編輯器。開啟 excel 軟體並確保您已開啟乙個 excel 文件。在 excel 文件中,單擊 開發工具 選項卡。在 開發工具 選項卡中,單擊 Visual Basic 按鈕。這將開啟 VBA 編輯器。方法 直接通過...

    如何開啟 Excel VBA

    Excel VBA 是一種程式語言,它通過編寫巨集來實現自動化操作。在 Excel 中,VBA 可用於建立自定義函式 過程和使用者介面,以及處理和分析資料。要開啟 Excel VBA,您可以按照下列步驟操作 開啟 Excel 應用程式 首先,開啟 Microsoft Excel 應用程式。可以通過在...

    FCA or FOB?教您如何為您的實際業務選擇最合適的貿易術語

    在國際上,FCA 和 FOB 是兩個常用的術語,分別代表 貨交承運人 和 裝運港船用交貨 這兩個術語在交付方式 風險邊界的劃分和適用的運輸方式方面存在明顯差異。下面我們將詳細解釋這些差異,並展示這兩個術語如何在實際業務中使用。首先,交付方式的差異。根據FCA條款,賣方必須在指定地點將貨物交付給指定的...

    案例分析:上市公司債權收購最新案例及超實用分析

    一 債務併購的基本原則和主要模式 債權收購是指在股權併購中,收購方承擔或清償目標公司的債務,作為其購買股權的部分或者全部對價,主要用於收購破產企業。早期主要應用於虧損國有企業的轉讓重組,近年來,應用場景逐漸增多,如破產重整 質押危機緩解 上市公司重大資產重組中的 清殼 操作等。基於債務的併購主要有兩...

    不要為了擁有它們而做典型案例!

    們看了昨天的文章 突發事件局指導城鎮在工地上執法,聽聽怎麼說 大家普遍認為這是一起典型的亂序行為案例。說到典型案例,筆者了解到,有些地方要求行政處罰案件每年必須有一定數量的典型案例。所謂典型案例,必然不是那些常見的違規行為,比如缺乏警示標誌,通常都有一定的範圍和要求。例如,如果企業因重大事故或重大事...