Re: [請益] excel vba的ip range展開成連續個別ip的

看板MIS (IT資訊人員)作者 (乞丐下大願panhandler)時間3年前 (2021/09/27 23:19), 編輯推噓1(100)
留言1則, 1人參與, 3年前最新討論串3/3 (看更多)
先謝謝c大,我將c大程式的vbCrLf取代成" "與將Debug.Print s取代成msgbox s 訊息視窗真的出現我要的10.0.0.1 10.0.0.2 10.0.0.3了 regular expression,我在splunk與ELK與python有看過 但還沒有時間去學,沒想到re物件功能這麼強大 c大的專業程式碼,我會再好好琢磨,學習起來 我excel上有source ip與destination ip兩欄位 *source ip的一個儲存格內有多ip與ip range,例如分別是10.0.1.200 10.0.0.1 10.0.2.27 10.0.0.1-3 10.0.3.245-246 已實作如下程式,找尋source ip每列儲存格中有-字元,好之後利用c大程式碼進行取代 For r= ivalue to evaule InStr(cells(r,3),"-") next 上面*source ip的一個儲存格內有多ip與ip range的範例 分別取代後是10.0.1.200 10.0.0.1 10.0.2.27 10.0.0.1 10.0.0.2 10.0.0.3 10.0.3.245 10.0.0.246 要達到上面最後結果,打算將c大程式由sub轉成可傳入引數的vba函數,還要再研究一下 利用字串處理函數,例如left(),right(),感覺要用mid()比較適當 要找出一個儲存格(一個字串中)任意位置的ip range,然後用c大程式取代成連續個別ip 最後,應該要用vba replace()函數,我也已在此問題的其他地方用過 但整個coding還在著墨,繼續努力 再次謝謝c大 ※ 引述《cutekid (可愛小孩子)》之銘言: : Sub demo() : ip = "10.0.0.1-3" : Set re = CreateObject("vbscript.regexp") : re.Pattern = "(\d+.\d+.\d+.)(\d+)-(\d+)" : With re.Execute(ip)(0) : p = .submatches(0) : For i = .submatches(1) To .submatches(2) : s = s & p & i & vbCrLf : Next : End With : Debug.Print s : End Sub : ※ 引述《kino818 (乞丐下大願panhandler)》之銘言: : : 由於公司要盤點防火牆規則成excel特定格式 : : 之前都人工盤點,很費時 : : 最近學了點excel vba,還沒很熟 : : 已完成下面 : : 1.config xml轉html(利用python) : : 2.vba自動讀入html成excel資料 : : 3.防火牆規則分類 : : 後面還要轉成公司格式,沒太大問題 : : 現在遇到ip range展開成連續個別ip的作法抉擇? : : 下面是網頁把10.0.0.1-10.0.0.3轉成連續多儲存格個別ip : : https://www.mrexcel.com/board/threads/excel-expand-ip-address-range-to-individual-ip.1148927/ : : 我防火牆上ip range格式為10.0.0.1-3想轉成一個儲存格內的資料10.0.0.1 10.0.0.2 : : 10.0.0.3 : : 我還不了解excel vba的Ubound()與array用法 : : 想請教我各位先進ip range是10.0.0.1-10.0.0.3或10.0.0.1-3哪種表示法比較容易實現 : : coding? : : 我自己回答,應該是第一種表示法最易vba實現,上面網頁可提供方向 : : 但第二種表示法能夠用vba寫出來嗎? : : 感謝 : : -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.80.120 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/MIS/M.1632755947.A.21A.html

09/28 19:49, 3年前 , 1F
不客氣喔,有問題可以一起討論。祝順心,南無阿彌陀佛!
09/28 19:49, 1F
文章代碼(AID): #1XKU3h8Q (MIS)
文章代碼(AID): #1XKU3h8Q (MIS)