VBA程式碼例項---一個工作表拆分為N個工作表
這是一個常用而且經典的例子:根據內容,把一個工作表中的內容,拆分到N個工作表中,並根據內容命名新建的工作表。
¤主要知識點¤
1、影響程式碼執行閃屏以及提示框的處理:
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
2、工作表的新建,命名,刪除操作;
3、單元格區域的內容複製方式;
4、IF分支語句和For迴圈語句的使用;
¤例項¤
新建工作表,把員工資訊複製到對應的以部門命名的工作表中。
¤實現程式碼¤
Option Explicit Sub 拆分工作表() Application.DisplayAlerts = False '不顯示錯誤提示框 Application.ScreenUpdating = False '不閃屏 Dim i As Integer '輔助工作表變數 Dim sh As Worksheet '刪除多餘的工作表 If Sheets.Count > 1 Then For i = Worksheets.Count To 2 Step -1 Worksheets(i).Delete Next i End If '對資訊表中資料按照部門排序,之後按照部門拆分進新的工作表 Dim irow As Integer '定義一共需要處理的行號 Dim istart As Integer '定位起始行數變數 irow = Range("A" & Rows.Count).End(xlUp).Row '計算一共需要處理的行號 If irow > 2 Then Range("a3:H" & irow).Sort Range("f2"), xlAscending '對資訊區域進行排序,不能含標題 istart = 3 For i = 3 To irow With Worksheets("員工資訊表") '指定活動工作表 If .Range("f" & i).Value <> .Range("f" & i + 1).Value Then '判斷是否為同一部門 Worksheets.Add after:=Worksheets(Sheets.Count) '新建工作表 Set sh = Worksheets(Worksheets.Count) '指定工作表給變數 sh.Name = .Range("f" & i).Value '以部門命名工作表 .Range("a1:h2").Copy sh.Range("a1:h2") '複製標題到新建工作表中 .Range("a" & istart & ":h" & i).Copy sh.Range("a3") '複製內容到工作表中 sh.Columns.AutoFit '設定自動列寬 istart = i + 1 End If End With Next i End If Worksheets("員工資訊表").Select '回到第一個工作表 Application.ScreenUpdating = True '恢復閃屏預設設定 Application.DisplayAlerts = True '恢復提示框預設設定 End Sub
Option Explicit Sub 拆分工作表2() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim i As Integer If Worksheets.Count > 1 Then For i = Worksheets.Count To 2 Step -1 Worksheets(i).Delete Next i End If Dim irow As Integer Dim k As Integer Dim sDep As String Dim sh As Worksheet irow = Range("A" & Rows.Count).End(xlUp).Row For i = 3 To irow sDep = Worksheets(1).Range("F" & i).Value On Error Resume Next '遇到錯誤繼續,這裡錯誤主要是未定義的工作表 Set sh = Worksheets(sDep) '這一行如果遇到工作表不存在,就會報錯,返回值為err.number <> 0 If Err.Number <> 0 Then '工作表不存在,那麼新建工作表,並把標題複製到新建的工作表 Set sh = Worksheets.Add(, Worksheets(1)) sh.Name = sDep Worksheets(1).Range("A1:h2").Copy sh.Range("A1") End If k = sh.Range("A1").CurrentRegion.Rows.Count + 1 '依次複製內容到工作表的行號 'sh.Range("A" & k).Resize(1, 7).Value = Worksheets(1).Range("A" & i).Resize(1, 7).Value '賦值方法 Worksheets(1).Range("A" & i & ":h" & i).Copy sh.Range("A" & k) '複製方法 sh.Columns.AutoFit '列寬自動調整 Next i Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
相關推薦
VBA程式碼例項---一個工作表拆分為N個工作表
這是一個常用而且經典的例子:根據內容,把一個工作表中的內容,拆分到N個工作表中,並根據內容命名新建的工作表。 ¤主要知識點¤ 1、影響程式碼執行閃屏以及提示框的處理: Application.ScreenUpdating = False Application.Displ
把多個Excel文件合並到一個Excel文件的多個工作表(Sheet)裏
ger xlsx eww 右擊 對話 如果 work excel 對話框 實現的功能是把多個Excel文件的第一個工作表(Sheet)合並到一個Excel文件的多個工作表裏,並且新工作表的名稱等於原Excel文件的文件名。開發環境Excel2007,但是Excel
C 將一個單鏈表拆成3個迴圈連結串列,其中一個是純數字,一個純字母,一個其他字元
前面相關操作在這呢,這個函式依託於此 //結構體 typedef struct Node { ElementType data; struct Node * next; } LNode, * LinkNode; //將一個單鏈表拆成3個迴圈連結串列,其中一個是純數字
OGG進程拆分(單表拆成多個進程)
byte utf 主機 al32utf8 spa pup epo 同時 edi OGG進程拆分(單表拆成多個進程) 概要: 《OGG進程拆分》介紹了如何將一個入庫進程中的多個表拆分到其他進程中。本篇將著重介紹如何使用多個進程同時入庫一張表。 適用條件: 1)入庫進程只同
VBA二次學習筆記(2)——兩個Excel表內容比較
integer then 控制 圖片 amp 員工 工作 表格 獲取 說明(2018-9-3 22:38:58): 1. 就是之前問同事要來的作業,有兩個格式一樣的Excel文件,一個是正確答案,一個是員工作答的。通過代碼將兩個文件進行比對,把不同之處列出來。 正文: S
將帶頭結點的單鏈表分解成兩個單鏈表,使其中一個含奇數號元素另一個含偶數號元素,並保持相對順序不變
#include "stdafx.h" #include<stdio.h> #include<malloc.h> #include<stdlib.h> typed
27、輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。
-s st2 image code solution 兩個 cnblogs 思路 div 輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。 思路:同歸並算法 本題: 1 public class Solution {
lintcode166 鏈表倒數第n個節點
next ntc cti rst 數量 solution nbsp cnblogs color 鏈表倒數第n個節點 找到單鏈表倒數第n個節點,保證鏈表中節點的最少數量為n。 思路:設置兩個指針first,second指向head,first指針先向前走n,然後
LintCode之鏈表倒數第n個節點
first bsp urn val ram tco .cn cnblogs 1-1 題目描述: 我的代碼: 1 /** 2 * Definition for ListNode. 3 * public class ListNode { 4 * i
166 鏈表倒數第n個結點
rip href problem 思路 不為 代碼 ++ tle TE 原題網址:https://www.lintcode.com/problem/nth-to-last-node-in-list/description 描述 找到單鏈表倒數第n個節點,保證鏈表中
[遞迴] 排列組合 - 從一個字串中任意選取N個元素構成的所有排列組合 - C語言
排列組合 【題目】求從字串中"ABCD"中任取3個元素構成的所有排列組合 A
LeetCode 19. Remove Nth Node From End of List(刪除單鏈表倒數第N個結點)
題目描述: Given a linked list, remove the nth node from the end of list and return its head.例子: Give
Remove Nth Node From End of List(刪除從最後一個結點起的第n個結點)
Given a linked list, remove the nth node from the end of list and return its head.For example, Given linked list: 1->2->3->4-&g
把一個字串迴圈左移n個字元
原始碼均在XP系統,VS2008下編譯並執行 附上原始碼 #include "stdafx.h" #include <string.h> /***************************************************
LintCode 找到單鏈表倒數第n個節點
給出連結串列 3->2->1->5->null和n = 2,返回倒數第二個節點的值1. 第一種方法:單鏈表只有頭指標,所以只能從頭部開始尋找,先遍歷一遍連結串列,確定連結串
刪除鏈表倒數第n個節點
val lin nod clas next pre def end list 題目: 給定一個鏈表,刪除鏈表的倒數第 n 個節點,並且返回鏈表的頭結點。 示例: 給定一個鏈表: 1->2->3->4->5, 和 n = 2. 當刪除了倒數
PHP實現一個hash表(拉鍊法解決hash衝突)程式碼例項
<?php header('Content-type:text/html;charset=utf-8'); class HashTable{ private $buckets; private $size = 10; public function __const
VBA異常--執行時錯誤1004(將一個工作簿拆分多個工作表)
概述: 打算將工作簿拆分多個工作表,丟擲異常 原因是這個工作簿中有隱藏的工作表,對於Copy操作,它是不能複製隱藏的工作表的,但是Worksheets是所有工作表的集合(自然有隱藏工作表) 最後的解
excel中使用vba寫一個駝峰工具,用來將資料表中的欄位改為程式碼中的欄位
寫之前在網上沒有找到自己想要的效果,就想著自己寫一下,感覺還挺簡單 因為以前從來沒有接觸過vba,所以查了一些資料。想把過程記錄一下 下面就是最終想要的效果圖 把程式碼也貼下吧 Sub tuoFeng() Dim preValue, finValue As Str
[VBA]匯總多個工作簿的指定工作表到同一個工作簿的指定工作表中
速度慢 excel trre books for each loop 表格 columns ive sub 匯總多個工作簿() Application.ScreenUpdating = False Dim wb As Workbook, f As String, l As