- ベストアンサー
Excel VBAの書き方教えてください
- Excel VBAの書き方について教えてください。具体的には、Sheet1のIPアドレスからSheet2のA列を検索し、Sheet3と結合して完了のシートに書き込む処理を行いたいです。解決策を教えていただけると助かります。
- Excel VBAの書き方について教えてください。Sheet1のIPアドレスからSheet2のA列を検索し、Sheet3と結合して新しいシートに書き込む処理を実装したいです。この処理に関して悩んでおり、解決方法をお教えいただけると助かります。
- Excel VBAの書き方についてお教えください。Sheet1のIPアドレスをSheet2のA列から検索し、Sheet3のデータと結合して新しいシートに書き込む処理を実装したいです。この問題に取り組んでいますが、解決策が見つかりません。アドバイスをお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ざっと作ってみました イメージと合わない箇所は直してください 注) ・列固定なので、Cellsを使いませんでした ・ワイルドカードの仕様がよくわからなかったので使いませんでした ★わからないのは、シート参照ですか? 文字列操作ですか? Private Sub SerchIP() Dim lMaxRow1 As Long Dim lMaxRow2 As Long Dim lMaxCnt1 As Long Dim lMaxCnt2 As Long Dim lOutCnt4 As Long Dim sIP As String Dim sIP1 As String Dim sIP2 As String Dim sOutIP As String lMaxRow1 = Worksheets("Sheet1").Range("A65536").End(xlUp).Row lMaxRow2 = Worksheets("Sheet2").Range("A65536").End(xlUp).Row lMaxRow3 = Worksheets("Sheet3").Range("A65536").End(xlUp).Row lOutCnt4 = 1 For lMaxCnt1 = 1 To lMaxRow1 sIP1 = Worksheets("Sheet1").Range("A" & lMaxCnt1).Value sIP1 = Left(sIP1, InStrRev(sIP1, ".") - 1) For lMaxCnt2 = 1 To lMaxRow2 sIP2 = Worksheets("Sheet2").Range("A" & lMaxCnt2).Value sIP2 = Left(sIP2, InStrRev(sIP2, ".") - 1) If sIP1 = sIP2 Then sOutIP = Worksheets("Sheet3").Range("A1").Value & """" sOutIP = sOutIP & Worksheets("Sheet2").Range("B" & lMaxCnt2).Value & """" sIP = Worksheets("Sheet1").Range("A" & lMaxCnt1).Value sOutIP = sOutIP & "(" & Mid(sIP, InStrRev(sIP, ".") + 1) & ")" sOutIP = sOutIP & Worksheets("Sheet3").Range("A2").Value Worksheets("完了").Range("A" & lOutCnt4).Value = sOutIP lOutCnt4 = lOutCnt4 + 1 End If Next Next End Sub
お礼
ありがとうございました! イメージとあってました すごく助かりました。 これを参考に残りの部分も作っていきたいと思います! 初級程度しか出来なく応用がなかなかできなくて IF使ってやるのかなとか、セル内の文字の途中までの内容を比較するとか どうやるのか分からず困ってました。 シート参照も文字列操作もどっちもでした・・・。 単純にペタッと張り付けたりする程度とかなら なんとかって感じでしたので 本当にありがとうございました