iT邦幫忙

0

EXCEL表格如何複製其中文字用VBA或者巨集製作

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20220322/20147610h5yCZDszTZ.jpg
我每次收到這樣的文件
有辦法將文件裡欄位某些文字單獨複製出來貼到另一個sheet頁面嗎?
有VBA或者是巨集的指令可以這樣做嗎?

看更多先前的討論...收起先前的討論...
froce iT邦大師 1 級 ‧ 2022-03-22 16:27:50 檢舉
有,但問題是別人寄給你的excel裡面不會包含你寫的巨集。
jo1526 iT邦新手 5 級 ‧ 2022-03-22 16:35:27 檢舉
那可以先寫好巨集 用巨集去開啟每次對方寄給我的檔案 在去用巨集方式把括弧內的文字作複製嗎?
blanksoul12 iT邦研究生 5 級 ‧ 2022-03-23 08:24:36 檢舉
分兩個部份寫吧.
1. outlook 部份認 key word 打開某一個 excel
2. 打開確 excel 後寫 open action 找outlook 入面該提目的 e-mail 提出附件再對附件進行要做的東西
菩薩慈悲:應該不難吧。連末學的程度都好像能辦到,只要明確知道那些是要複製的對象及複製到的目的即可。感恩感恩 南無阿彌陀佛
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
海綿寶寶
iT邦大神 1 級 ‧ 2022-03-22 16:59:28

巨集要錄
VBA要寫

BeEvil_Y iT邦新手 4 級 ‧ 2022-03-23 20:12:57 檢舉

妹子要泡

0
Misty0723
iT邦新手 3 級 ‧ 2022-03-22 19:14:43

找的到邏輯就能寫得出VBA~
要先確定AC ADAPTER...那列的邏輯(不同key part你要它怎麼判定要抓整句中的哪部分作為代表,括號括起來的部分還是?)
抓的到的話就可以抓下一層的細節資料~

jo1526 iT邦新手 5 級 ‧ 2022-03-23 08:49:21 檢舉

都是括號的部分我要怎麼用VBA寫出呢

Misty0723 iT邦新手 3 級 ‧ 2022-03-23 14:57:30 檢舉

用function就可以,把儲存格的資料丟進去~

Function FindStringinBracket(target As String) As String

    binon = InStr(target, "(")
    endon = InStr(target, ")")
    If binon > 0 & endon > 0 & binon < endon Then
        FindStringinBracket = Mid(target, binon + 1, endon - binon - 1)
    Else
        FindStringinBracket = "No Data"
    End If
    
End Function
0
BeEvil_Y
iT邦新手 4 級 ‧ 2022-03-23 20:28:46

先DIM一個變數(陣列)負責抓「品項」
再DIM一個變數(陣列)負責抓「型號」
最後DIM一個變數(陣列)負責抓「訂單」

品項做外迴圈
型號做內迴圈

第一步:
先計算A欄最後一行為何?

第二步:
遍歷所有A欄,
只要背景是綠色的,以陣列的方式寫進變數「品項」。
如果是橘色的寫進變數「型號」。
以上都不是的寫進變數「單號」。

第三步:
創一個新sheet

第四步:(開始塞資料)

計算「品項」陣列長度,並塞進FOR迴圈,當外層。
計算「型號」陣列長度,並塞進FOR迴圈,當內層。

再寫一個計次,負責計算新sheet的筆數。
利用Cell()函數把值塞進ABCD欄,每遞層一個計次,
把「品項」「型號」「單號」依序塞進ABCD

結束,完成。

0
blanksoul12
iT邦研究生 5 級 ‧ 2022-03-24 08:55:44

兩張工作表名稱分別是 data (拿回來的資料) , result.
拿回來的資料當由 a1 開始放.
建基於你放出來的資料特性的 vba

Sub test()

For i = 1 To Worksheets("data").[a1048576].End(xlUp).Row
    If Worksheets("data").Cells(i, "a") <> "" Then
        If InStr(Worksheets("data").Cells(i, "a"), "(") > 0 Then
            pro_duct = WorksheetFunction.Trim(Replace(Split(Worksheets("data").Cells(i, "a"), "(")(1), ")", ""))
        ElseIf Worksheets("data").Cells(i, "d") <> "" Then
            Worksheets("result").[a1048576].End(xlUp).Offset(1, 0) = Worksheets("data").Cells(i, "d")
            Worksheets("result").[a1048576].End(xlUp).Offset(0, 1) = pro_duct
            Worksheets("result").[a1048576].End(xlUp).Offset(0, 2) = Worksheets("data").Cells(i, "g")
        End If
    Else
        Exit For
    End If
Next

End Sub

我要發表回答

立即登入回答