vba单元格批量赋值_Excel●VBA●如何把批注中的信息批量提取到单元格?
在Excel中,批注(Comment)是一類特殊的數據。
利用批注,我們可以為單元格添加備注信息(如解釋、說明),方便表格閱讀者了解數據背后的信息。
然而,由于不當的使用習慣,我們也經常碰到一些表格,制表人將極其復雜的備注信息寫入到批注而非單元格中,導致后期想提取批注時非常麻煩。
如上圖,A列“系統單號”中每個單元格都帶有批注,所批注信息為系統單號對應的所有柜號(文本,按行排列)。
實際上A、B列有很多行數據,本案例使用4行僅作演示之用。
現在需求是——如何快速將A列所有批注信息(即柜號)提取出來,并且寫入獨立的單元格,完成右側樣式表格。
怎么辦?這是一個相當棘手的問題!
如果手工處理的話,那就要一個一個單元格復制批注內容、粘貼后再分列、轉置……,工作量極大,我保證你處理完之后手抽筋!
那應該怎么處理呢?下面教你用VBA完成一鍵處理。
第1步:準備工作假設,我們要將目標數據提取至E、F、G3列,提前做好表頭:
第2步:編寫代碼
ALT+F11,打開VBE,在工作表對應模塊中編寫代碼如下:Sub 提取批注內容()Dim arr() As String ?'定義一個動態數據,字符型For i = 3 To 6arr = Split(Cells(i, 1).Comment.Text, vbLf)For j = LBound(arr()) To UBound(arr())If arr(j) <> "" Then[e65536].End(3).Offset(1, 0) = Cells(i, 1)[f65536].End(3).Offset(1, 0) = arr(j)[g65536].End(3).Offset(1, 0) = Cells(i, 2)End IfNextNextEnd Sub
將光標置于代碼任何位置,按F5運行程序。幾秒鐘后,就可以在Excel中看到執行結果了:
本例中,利用Split方法,對批注文本(Comment.Text)進行拆分,而拆分所依據的符號是回車符(Vblf)。
這樣,將拆分后的結果儲存到動態數組arr()中,最后再將數組元素賦值給目標單元格即可。
關鍵知識點:
1、定義動態數據arr()
2、split方法,利用回車符(vblf)進行拆分
3、由于原批注末尾有多個空行,所以拆分后要加上IF判斷,不為空才執行
4、split拆分后的結果是一個數組,最后將數組內容依次寫入單元格
5、OFFSE方法,對單元格進行偏移
總結
以上是生活随笔為你收集整理的vba单元格批量赋值_Excel●VBA●如何把批注中的信息批量提取到单元格?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10参数_小米10和oppofindx2
- 下一篇: mysql自动编号_MySQL自动编号与