Re: [請益] excel vba的ip range展開成連續個別ip的
看板MIS (IT資訊人員)作者kino818 (乞丐下大願panhandler)時間3年前 (2021/09/27 23:19)推噓1(1推 0噓 0→)留言1則, 1人參與討論串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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
MIS 近期熱門文章
PTT職涯區 即時熱門文章