▽1
●
Mook ●80ポイント ![]() |
前回の仕様のままで、検索範囲をした場合です。
Option Explicit '-------------------------------------------------------- ' K 列のお勧め文を処理 '-------------------------------------------------------- Sub main() '-------------------------------------------------------- Dim lastRow As Long lastRow = Range("K" & Rows.Count).End(xlUp).Row Dim i As Long For i = lastRow - 1 To 1 Step -1 If Cells(i, "K") = "お勧め文" Then Cells(i + 2, "K") = makeSentense(Cells(i + 1, "K"), i) End If Next End Sub '-------------------------------------------------------- Function makeSentense(srcStr As String, baseRow As Long) '-------------------------------------------------------- Dim RegExp As Object Dim Match As Object Set RegExp = CreateObject("VBScript.RegExp") '--- [****] を検索 RegExp.Pattern = "\[[^(\[\])]+\]" RegExp.Global = True '複数マッチを有効にする For Each Match In RegExp.Execute(srcStr) srcStr = Replace(srcStr, Match.Value, getWord(Match.Value, baseRow - 1)) Next makeSentense = srcStr End Function '-------------------------------------------------------- Function getWord(findWord, offsetRow As Long) '-------------------------------------------------------- '--- ★定義範囲は下記の範囲 Const KEYWORDS_BASE_RANGE = "A1:J1,A10:J10,A13:J13,A16:J16,A19:J19,A22:J22" getWord = "■■" Dim keyRange As Range Set keyRange = Range(KEYWORDS_BASE_RANGE).Offset(offsetRow, 0).Find(What:=findWord, lookat:=xlWhole) If keyRange Is Nothing Then Exit Function If IsError(keyRange.Offset(2, 0)) Then Exit Function If keyRange.Offset(2, 0) = "" Then Exit Function getWord = keyRange.Offset(2, 0).Value End Function
もし単純に25行ごとに処理をしたいばあい、先頭の部分を
'-------------------------------------------------------- Sub main() '-------------------------------------------------------- Dim lastRow As Long lastRow = Range("K" & Rows.Count).End(xlUp).Row Dim i As Long For i = 1 To lastRow Step 25 Cells(i + 2, "K") = makeSentense(Cells(i + 1, "K"), i) Next End Sub
としてみてください。
ありがとうございます。どうもエラーがでるようでして、
下記にエクセルファイルの画像をのせておきましたので、一度ご覧いただけますでしょうか?(0913です)
http://photos.yahoo.co.jp/hatenasenyou19
お忙しい中ありがとうございます。