九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
3段VBA代碼,從此不再「復(fù)制-粘貼」

復(fù)制、粘貼,同學(xué)們一定不陌生,大部分的情況下,都可以選中區(qū)域,CTRL+C,CTRL+V搞定。但是如果遇到數(shù)據(jù)有復(fù)制次數(shù)的限制又怎么辦呢?


趕緊來看一看吧!

這是作者的一個朋友問的問題,按照復(fù)制次數(shù)在E:F列中粘貼內(nèi)容,效果圖如下:

這樣的情況,同學(xué)們?nèi)绾翁幚砟兀窟€是CTRL+C、CTRL+V?那也是可以操作的,見動圖:

如果,這份數(shù)據(jù)有幾千行的話,使用快捷鍵就極有可能出錯。

今天就教大家:如何用3種VBA代碼,解決這個問題?

第一種代碼:

Sub 按指定次數(shù)復(fù)制()

  Range("E2:F10000").ClearContents

  For Each rng In Range("C2:C" & Cells(Rows.Count, "C").End(3).Row)

    Range(Cells(rng.Row, "A"), Cells(rng.Row, "B")).Copy

    For i = 1 To Cells(rng.Row, "C")

      Cells(Cells(Rows.Count, "E").End(3).Row + 1, "E").Select

      ActiveSheet.Paste

    Next i

  Next

End Sub

代碼解析:

''Line1:工程起始語句

''Line2:清空E2:F10000區(qū)域原有的數(shù)據(jù)

''Line3:在“復(fù)制次數(shù)”的C列中,循環(huán)每一個單元格變量rng

''Line4:使用copy方法,復(fù)制對應(yīng)行的AB兩列單元格

''Line5:按照C列中的復(fù)制次數(shù),確定循環(huán)次數(shù)

''Line6:選中E列最后一個沒有值的空單元格

''Line7:使用Paste方法粘貼

''Line8:結(jié)束i變量的循環(huán)

''Line9:結(jié)束對單元格的循環(huán)

''Line10:工程結(jié)束語句

 
這是典型的把手動操作“直譯”為代碼的過程,遍歷“復(fù)制次數(shù)”,然后就COPY和PASTE,相當(dāng)于就是讓代碼去CTRL+C和CTRL+V。雖然功能上可以達到要求,但是對于代碼的運算效率來說,也只能是解放了雙手的勞動,而不能很好提速。
 
第二種代碼:
 
Sub 按指定次數(shù)復(fù)制2()
  arr = Range("A2:C" & [A10000].End(3).Row)
  a = Application.WorksheetFunction.Sum(Application.Index(arr, , 3))
  ReDim brr(1 To a, 1 To 2)
  For i = 1 To UBound(arr)
    For j = 1 To arr(i, 3)
      k = k + 1
      brr(k, 1) = arr(i, 1)
      brr(k, 2) = arr(i, 2)
    Next j
  Next i
  Range("E2:F10000").ClearContents
  [E2].Resize(UBound(brr), UBound(brr, 2)) = brr
End Sub
 
代碼解析:
'’Line1:工程起始語句
'’Line2:將A~C列裝入數(shù)組arr
'’Line3:按照數(shù)組第3列的復(fù)制總次數(shù),確定新數(shù)組brr的行數(shù)
'’Line4:定義新數(shù)組brr
'’Line5:循環(huán)數(shù)組arr
'’Line6:此行判斷需要復(fù)制x次
'’Line7:計數(shù),確定新數(shù)組當(dāng)下要處理的行號
'’Line8:將arr第1列的對應(yīng)內(nèi)容賦值給新數(shù)組brr的第1列
'’Line9:將arr第2列的對應(yīng)內(nèi)容賦值給新數(shù)組brr的第2列
'’Line10:結(jié)束當(dāng)下的復(fù)制過程
'’Line11:進行下一列關(guān)鍵字的復(fù)制過程
'’Line12:清空E1:F10000的區(qū)域
'’Line13:將新數(shù)組賦值給從E1單元格開始的區(qū)域
'’Line14:工程結(jié)束語句

 
將操作對象的過程,轉(zhuǎn)換成放到內(nèi)存數(shù)組中運算,這樣的操作對于代碼的運行效率是相當(dāng)有效果的。只是這十幾行的統(tǒng)計,大家可以從動圖中感覺到快慢了吧!
 
第三種代碼:
 
Sub 按指定次數(shù)復(fù)制3()
  arr = Range("A2:C" & [A10000].End(3).Row)
  Set d = CreateObject("scripting.dictionary")
  For i = 1 To UBound(arr)
    For j = 1 To arr(i, 3)
      d(arr(i, 1) & "|" & arr(i, 2) & "|" & j) = ""
    Next j
  Next i
  Range("E2:F10000").ClearContents
  For Each d1 In d.keys
    k = k + 1
    Cells(k + 1, 5).Resize(1, 2) = Split(d1, "|")
  Next
End Sub
 
代碼解析:
''Line1:工程起始語句
''Line2:將A~C列裝入數(shù)組arr
''Line3:創(chuàng)建變量d為字典變量
''Line4:循環(huán)數(shù)組arr
''Line5:判斷需要復(fù)制x次
''Line6:將數(shù)組arr的第1列、第2列、被復(fù)制的次數(shù)序號,用|符號鏈接起來最為新的關(guān)鍵字,賦值到字典中
''Line7:結(jié)束當(dāng)下的復(fù)制過程
''Line8:進行下一列關(guān)鍵字的復(fù)制過程
''Line9:清空E1:F10000的區(qū)域
''Line10:在字典d中循環(huán)每一個字典關(guān)鍵字元素
''Line11:計數(shù),確定單元格對應(yīng)的行號
''Line12:從E2單元格開始逐行賦值,用split函數(shù)按照|符號拆分字符串(相當(dāng)于分列的功能)
''Line13:結(jié)束字典變量循環(huán)
''Line14:工程結(jié)束語句

 
這第三段代碼,是使用了“字典”功能來處理的。雖然也在使用數(shù)組,但是不得不說,字典的運行效率要比數(shù)組會更快。

如果我們要處理一個幾千、幾萬行數(shù)據(jù)的情況,這種方式的處理,效率最高。
 
寫到最后:

很多同學(xué)“談V色變”,甚至抵觸,這是不行的!

作者E圖表述告訴大家:函數(shù)學(xué)的越多,只會讓你的工作越來越多,因為你的能力強,領(lǐng)導(dǎo)自然讓你多分擔(dān);只有學(xué)會使用VBA,才能讓你真正解放雙手,從眾多統(tǒng)計員中脫穎而出,才有可能升職加薪。
所以不要再說學(xué)EXCEL沒用,而是你要學(xué)習(xí)有用且可變現(xiàn)的能力。

最后,感謝大家耐心看完。

我們下期再見。



編輯:六姑娘
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VBA常用小代碼304:一個字典實現(xiàn)條件求和和計數(shù)功能
神奇的VBA系列-017:分裂單元格數(shù)據(jù)并提取數(shù)據(jù)-拓展介紹
【Excel VBA】用字典查詢并合并符合條件的多個結(jié)果
來自【Excel完美論壇】
完全手冊Excel VBA典型實例大全:通過368個例子掌握
excel如何使用VBA代碼判斷單元格是什么顏色
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服