操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    BA中有一個對象,說其強大也不十分明顯,說不強大吧,還是有點特別的作用。

    本文介紹一個不十分經常使用的一個對象DataObject。

    功能介紹:

    簡單來說DataObject可以存儲一段指定格式的文本并保留最近操作中的文本。

    對象聲明:

    Dim xData As New DataObject

    首先申明一個DataObject,如上代碼,新建了一個DataObject對象,xData

    對象引用:

    設置對象文本:xData.SetText “這是一個DataObject對象示例!”

    返回對象文本:xStr=xData.GetText

    如上圖所示,設置一個單元格值,然后利用DataObject對象來顯示出來。

    看上去并沒有什么用,但是在過程值傳遞應用當中,和剪貼板的功能類似。

    同樣,此對象還可以和剪貼板進行數據傳遞。

    GetFromClipboard

    將數據從剪貼板復制到 DataObject。

    PutInClipboard

    將數據從 DataObject 移動到剪貼板

    總體來說,就是個中間傳遞功能。

    當然了,在實際應用當中,我們通常是設置一個公共變更來傳遞值,至于DataObject對象傳遞,有什么優勢,似乎要認真理解一番。

    代碼:

    Private Sub ShowDataText()
    Dim xData As New DataObject
    xData.SetText Range("C2").Value '設置DataObject對象文本
    Dim xStr As String
    xStr=xData.GetText '返回DataObject對象文本
    MsgBox xStr
    Set xData=Nothing
    End Sub

    歡迎關注、收藏

    ---END--

    前面我們發布過將多個Excel工作簿中的工作表合并到一個工作表簿中,就有網友提了一個問題,如何講一個Excel工作簿中的工作表拆分成多個工作表,其實實現的方法很多,如果數據少的話,我們直接采用Excel的篩選,然后復制粘貼就可以了,如果數據比較多,或者是日常工作的話,每天這樣復制粘貼,就很麻煩~,或者我們使用透視表也可以。我們這講就來使用VBA的方法來實現,這個方法很簡單,只需要復制代碼(代碼也是小編從網上找的,然后修改了下,這樣通用性就更強了,更多精彩請關注公眾號:word_excel_ppt),運行就可以了。

    1、素材文件

    素材文件

    我們的素材文件是以某公司為例,數據記錄了公司旗下有7家店鋪,從2016年1月1日到2018年12月31日,每天銷售的流水數據。

    存放數據的工作表名稱已修改為“數據源”,工作表的第一行為標題行,一共有2195行數據。

    現在我們想按照店鋪名稱,將整個工作表拆分開。

    2、操作步驟

    打開我們的工作表文件以后,將需要拆分的工作表名字修改成“數據源”。然后按鍵盤上面的Alt+F11,彈出VBA編輯的窗口,將代碼粘貼進代碼編輯器中(代碼見最后附件);

    代碼窗口


    重要的事情重復一次,因為我們代碼里面,要拆分的工作表名稱叫"數據源",所以你直接把你要拆分的工作表名稱修改成“數據源”才能正常運行。

    3、運行程序

    在VBA編輯器中,點擊示例中的綠色三角(見上圖),或者是按鍵盤上面的F5都可以。

    選擇標題行

    此時會讓我們選擇標題行,我們通過鼠標點擊標記標題行(第1行)就可以了;

    選擇拆分字段

    接下來會讓我們選擇,需要按照哪個字段拆分,我們就選擇門店名稱(B1)單元格,然后直接點確定。

    搞定

    這個時候程序就會自動運行,鼠標會閃動,我們需要等一下,運行的時間就和你電腦的配置以及要拆分文件的大小有關,以我們的素材為例,大概需要10秒鐘,就可以搞定,然后會彈出一個提示完成的消息框,我們點確定就可以。

    運行結果

    回到我們的文件里面,可以看到程序已經給我們拆分好了,是不是覺得很方便呢?

    附程序代碼(程序在Win7+Excel 2016 運行可行):

    視頻演示,稍后發布在頭條專欄中

    Sub 按照指定字段拆分工作表()
    '本程序來源于網絡,原作者不詳,特留此句對原作者表示感謝;
    '本程序中,云淡風輕微課堂(公眾號:word_excel_ppt)進行了部分修改,適用性更廣
     Dim myRange As Variant
     Dim myArray
     
     Dim titleRange As Range
     
     Dim title As String
     
     Dim columnNum As Integer
     
     myRange=Application.InputBox(prompt:="請用鼠標點擊標題行:", Type:=8)
     
     myArray=WorksheetFunction.Transpose(myRange)
     
     Set titleRange=Application.InputBox(prompt:="請用鼠標點擊要拆分的字段,必須是第一行,且為1個單元格", Type:=8)
     
     title=titleRange.Value
     
     columnNum=titleRange.Column
     
     Application.ScreenUpdating=False
     
     Application.DisplayAlerts=False
     
     Dim i&, Myr&, Arr, num&
     
     Dim d, k
     
     For i=Sheets.Count To 1 Step -1
     
     If Sheets(i).Name <> "數據源" Then
     
     Sheets(i).Delete
     
     End If
     
     Next i
     
     Set d=CreateObject("Scripting.Dictionary")
     
     Myr=Worksheets("數據源").UsedRange.Rows.Count
     
     Arr=Worksheets("數據源").Range(Cells(2, columnNum), Cells(Myr, columnNum))
     
     For i=1 To UBound(Arr)
     
     d(Arr(i, 1))=""
     
     Next
     
     k=d.keys
     
     For i=0 To UBound(k)
     
     Set conn=CreateObject("adodb.connection")
     
     Select Case Application.Version * 1 '設置連接字符串,根據版本創建連接
     
     Case Is <=11
     
     conn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & ThisWorkbook.FullName
     
     Case Is >=12
     
     conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
     
     End Select
     
     Sql="select * from [數據源$] where " & title & "='" & k(i) & "'"
     Worksheets.Add after:=Sheets(Sheets.Count)
     
     With ActiveSheet
     
     .Name=k(i)
     
     For num=1 To UBound(myArray)
     
     .Cells(1, num)=myArray(num, 1)
     
     Next num
     
     .Range("A2").CopyFromRecordset conn.Execute(Sql)
     
     End With
     
     Sheets(1).Select
     
     Sheets(1).Cells.Select
     
     Selection.Copy
     
     Worksheets(Sheets.Count).Activate
     
     ActiveSheet.Cells.Select
     
     Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
     
     Application.CutCopyMode=False
     
     Next i
     
     conn.Close
     
     Set conn=Nothing
     
     Application.DisplayAlerts=True
     
     Application.ScreenUpdating=True
     
     MsgBox " 已經拆分完成" & vbCrLf & vbCrLf & "更多內容敬請關注公眾號:word_excel_ppt", vbInformation, "云淡風輕微課堂"
     
    End Sub
    
    


    更多精彩請關注公眾號:word_excel_ppt

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有