1. 程式人生 > >把excel中的資料,按條件分割成多個檔案

把excel中的資料,按條件分割成多個檔案

要求

有個excel檔案,把檔案中的資料按照某列,將相同的資料存為一個excel檔案。

VBA程式碼

執行下面的程式碼後,會在該excel的同級目錄下建立一個新資料夾“拆分出的表格”,拆分後生成的新檔案會存在這個目錄下。

我拆分了30個檔案,大約一分鐘時間。請耐心等待。
如果你感覺沒有進度,你可以看一下同級目錄下“拆分出的表格”資料夾中是否在緩慢生成新的檔案。

Sub 拆分成多個檔案()

    '輸入使用者想要拆分的工作表
    Dim sheet_name
    sheet_name = Application.InputBox("請輸入拆分工作表的名稱:")
    Worksheets(sheet_name).Select
'輸入獲取拆分需要的條件列 Dim col_name col_name = Application.InputBox("請輸入拆分依據的列號(如A):") '輸入拆分的開始行,要求輸入的是數字 Dim start_row As Integer start_row = Application.InputBox(prompt:="請輸入拆分的開始行:", Type:=1) '暫停螢幕更新 Application.ScreenUpdating = False '工作表的總行數 Dim end_row end_row = Worksheets(sheet_name).Range("A65536"
).End(xlUp).Row '遍歷計算所有拆分表,每個拆分表的格式為"表名稱,錶行數" '對於二維陣列,ReDim只能擴充最後一維,因此sheet_map行不變,擴充列 Dim sheet_map(), sheet_index ReDim sheet_map(1, 0) sheet_map(0, 0) = Range(col_name & start_row).Value sheet_map(1, 0) = 1 sheet_index = 0 With Worksheets(sheet_name) Dim row_count, temp, i row_count = 0
For i = start_row + 1 To end_row temp = Range(col_name & i).Value If temp = Range(col_name & (i - 1)).Value Then sheet_map(1, sheet_index) = sheet_map(1, sheet_index) + 1 Else ReDim Preserve sheet_map(1, sheet_index + 1) sheet_index = sheet_index + 1 sheet_map(0, sheet_index) = temp sheet_map(1, sheet_index) = 1 End If Next End With '根據前面計算的拆分表,拆分成單個檔案 Dim row_index row_index = start_row For i = 0 To sheet_index Workbooks.Add '建立最終資料資料夾 Dim dir_name dir_name = ThisWorkbook.Path & "\拆分出的表格\" If Dir(dir_name, vbDirectory) = "" Then MkDir (dir_name) End If '建立新工作簿 Dim workbook_path workbook_path = ThisWorkbook.Path & "\拆分出的表格\" & sheet_map(0, i) & ".xls" ActiveWorkbook.SaveAs Filename:=workbook_path, FileFormat:=-4143 ActiveSheet.Name = sheet_map(0, i) '啟用當前工作簿,ThisWorkbook表示當前跑程式碼的工作簿 ThisWorkbook.Activate '拷貝條目資料(即最前面不需要拆分的資料行) Dim row_range row_range = 1 & ":" & (start_row - 1) Worksheets(sheet_name).Rows(row_range).Copy Workbooks(sheet_map(0, i) & ".xls").Sheets(1).Range("A1").PasteSpecial '拷貝拆分表的專屬資料 row_range = row_index & ":" & (row_index + sheet_map(1, i) - 1) Worksheets(sheet_name).Rows(row_range).Copy Workbooks(sheet_map(0, i) & ".xls").Sheets(1).Range("A" & start_row).PasteSpecial row_index = row_index + sheet_map(1, i) '儲存檔案 Workbooks(sheet_map(0, i) & ".xls").Close SaveChanges:=True Next '進行螢幕更新 Application.ScreenUpdating = True MsgBox "拆分工作表完成" End Sub

遇到的小問題

巨集被禁用

相關推薦

excel資料條件分割檔案

要求 有個excel檔案,把檔案中的資料按照某列,將相同的資料存為一個excel檔案。 VBA程式碼 執行下面的程式碼後,會在該excel的同級目錄下建立一個新資料夾“拆分出的表格”,拆分後生成的新檔案會存在這個目錄下。 我拆分了30個檔案,大約一分

用html如何頁面分割檔案檔案拼接而

摘要: 不同平臺:pc端靜態html分割頁面,達到類似php等動態頁面的include引入頁面效果;手機端單一HTML5頁面建立多個頁面。 用html把首頁分成三個檔案 在PHP、JSP等動態頁面開發中,頁面裡引入其它頁面只需include()進來就可以實現頁面的分離。

將PDF檔案分割檔案

  下載的PDF格式的檔案有時出於閱讀和管理的需要,經常需要分割成多個獨立的檔案,如果利用專業實用的PDF拆分軟體來分割,則可以達到事半功倍的效果。  一般大家都會迅捷pdf分割軟體這個經典的PDF編輯工具,這個確實很強大,但是大部分使用都是比較初級的功能,最近在網上苦苦尋

java獲取excel資料並轉化為JSON格式

java通過poi讀取execl檔案,並且將其中的map格式和陣列格式的字串,轉化為相應的資料型別。 引入poi庫 讀取execl資料,轉化為json字串 將其中的map格式和陣列格式的字串,轉化為相應的資料型別 引入poi庫: <depen

編寫一個檔案分割工具一個大檔案分割小的檔案。並且能再次它們合併起來得到完整的檔案

package wenjianyuliu;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io

編寫一個檔案分割工具一個大檔案分割小的檔案。並且能再次他們合併起來得到完整的檔案

package wenjian; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java

excel將一個工作表根據條件拆分sheet工作表

本例介紹在excel中如何將一個工作表根據條件拆分成多個工作表。 注意:很多朋友反映sheets(i).delete這句程式碼出錯,要注意下面第一個步驟,要拆分的資料工作表名稱為“資料來源”, 而不是你新建工作簿時的sheet1這種。手動改成“資料來源”即可。或者是把程式碼中得"資料來源

linux如何將大檔案按照指定行數分割檔案

將一個大檔案分成若干個小檔案方法例如將一個BLM.txt檔案分成字首為 BLM_ 的1000個小檔案,字尾為係數形式,且字尾為4位數字形式先利用wc -l BLM.txt       讀出 BLM.txt 檔案一共有多少行再利用 split 命令split -l 2482 .

PDF編輯器哪個好如何PDF檔案拆分檔案

  PDF檔案現在在我們的日常工作和生活中出現的頻率越來越高了,有時候會遇到別人給的資料是PDF格式的文件,裡面的內容比較多,而我們只需要其中一部分內容的時候,那要怎麼辦呢,就需要把這個PDF文件拆分成多個檔案,或者按照頁面拆分,或者只需要拆分其中一兩頁,今天就讓我來跟大家分享一下我是怎樣拆分PDF檔案的

MFC將edit編輯框內的行字串根據“\n”換行符分割單行字串

程式碼功能:獲取到edit編輯框內的多行內容,並將其分割成多個單行字串 作者:weekdawn //獲取編輯框內容 UpdateData(TRUE); CString strEditStr;//編

如何實現將資料同時儲存到兩資料使得同一次提交檔案檔案ID號相同

情景說明: 假設我是一個檔案報告提交者,我想一次性提交需要交納的文件資訊。因此我的做法是,將一個個文字資訊通過TextBox控制元件新增顯示在GridView中,然後再將其儲存在對應的資料庫中。但是,我必須保證我這一次提交的資料,我作為提交者在第一個資料表中,僅有一條記錄,

HREE.JS 根據起始幀將一個AnimationClip物件分割AnimationClip

THREE.JS 根據起始幀將一個AnimationClip物件分割成多個AnimationClip 因為從3dsMax裡面匯出的模型只支援一個動畫,如果需要對多個動畫進行單獨控制的話就必須將其切割成多個AnimationClip物件,其實原理跟陣列擷取是一樣的。

excel按照某一列拆分檔案

1.開啟目標excel,按alt + f11鍵開啟VBE視窗 2.選擇插入->模組貼上下面程式碼到編輯器中 Sub 保留表頭拆分資料為若干新工作簿()     Dim arr, d As Object, k, t, i&, lc%, rng As Ran

怎麽編輯PDFPDF如何拆分PDF

mage 菜單欄 如何 但是 ado image water 點擊 多個 越來越多的小夥伴告訴小編在工作中遇到PDF文件,但是對於PDF文件不知道該如何修改,像是在PDF文件中想要拆分PDF文件的頁面,但是又不知道該怎麽去修改,不知道的話,快來看看下面的文章吧,沒準就會了哦

spark讀取資料夾(巢狀)下的檔案

在正常呼叫過程中,難免需要對多個資料夾下的多個檔案進行讀取,然而之前只是明確了Spark具備讀取多個檔案的能力。 針對多個資料夾下的多個檔案,以前的做法是先進行資料夾的遍歷,然後再進行各個資料夾目錄的讀取。 今天在做測試的時候,居然發現spark原生就支援這樣的能力。

將一個檔案分割檔案

實現效果:    知識運用:   FileStream    BinaryReader類   //用特定的編碼將基元資料型別讀作二進位制值   其建構函式主要使用UTF8Encoding初始化類例項    public BinaryReader(Stream input)       B

使用POI操作office2007及以上word模板替換變數變數被分隔XWPFRuns導致替換不了的處理方案

    我的方案可能不是最好的,卻是我經過嘗試覺得可用的方案,分享給大家。程式碼比較拙劣,希望大家指正。剛好在

如何將 .NetFramework WebApi 業務拆分模組

在 .NetFramework 中使用 WebApi ,在不討論 微服務 的模式下,大部分都是以層來拆分庫的 : 基礎設施 資料儲存層 服務層 WeApi 層 一些其它的功能庫 專案結構可能會像下面這樣子         有些人可能會將

excel中將一張表資料拆分工作表部門不相同的拆分單個工作表且單個工作表名及為部門

在工作表名稱上點右鍵選檢視程式碼,貼上以下程式碼到彈出視窗.關閉彈出視窗 ALT+F8選中該巨集執行Sub 拆分工作表()Application.ScreenUpdating = FalseDim rng As Range, arr()endrow = Range("A65

如何excel資料匯入到oracle資料已有的表

操作步驟如下: 準備資料:在excel中構造出需要的資料    2.將excel中的資料另存為文字檔案(有製表符分隔的)     3.將新儲存到文字檔案中的資料匯入到pl*sql中 &nb