• ベストアンサー

マクロ FINDについて

いつも回答して頂きありがとうございます。 ネット等で調べましたがさっぱり分かりません。指定した文字が下から数えて2番目にくる場合の記述方法について教えて頂けないでしょうか?宜しくお願い致します。 Find("定期", , xlValues, 1, , 2) のどこを変えたらよろしいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

少し手直しました。 sub macro2()  dim res as range  dim N as long, i as long  N = 3 ’そもそも指定数(以上)の「定期」が無かったらダメ  if application.countif(range("A:A"), "定期") < N then  msgbox "NA"  exit sub  end if ’A1から逆向き(一度一番下に回ってから上向き)に定期を探す=一番下の定期がヒットする ’必ずVBAのヘルプでfindを確認し、各名前付き引数の説明を理解してください  set res = range("A:A").find(what:="定期", lookin:=xlvalues, lookat:=xlwhole, searchdirection:=xlprevious)  for i = 2 to N ’そのひとつ前(上)にある定期を取得する  set res = range("A:A").findprevious(res)  next i  res.select end sub #参考 3個程度なら、下記の方が分かりやすければそれでも。 sub macro2r1()  dim res as range  if application.countif(range("A:A"), "定期") < 3 then  msgbox "NA"  exit sub  end if  with range("A:A")  set res = .find(what:="定期", lookin:=xlvalues, lookat:=xlwhole, searchdirection:=xlprevious) ’そのひとつ前にある定期を取得する  set res = .findprevious(res) ’さらにそのひとつ前の定期を取得する  set res = .findprevious(res)  end with  res.select end sub

kero1192kero
質問者

お礼

御手数お掛けしまして申し訳ありませんでした。 エラー処理も完璧に出来ていて脱帽です。質問する前に、FINDをヘルプで確認しましたが、何処の箇所が何番目とかに指定出来るか書いていなくて。そんな機能なかったんですね。やっぱり応用力がないと難しいです。これで、自分が今考えているマクロが出来そうなので、組み込んでみます。ありがとうございました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

>指定した文字が下から数えて2番目にくる場合 文字通りに理解すると、たとえばA列に 定期 あれ 定期 これ 定期 ←下から2番目にある定期 定期 それ と記入してあったら、下から2番目の定期が記入されているセルを取ってきたい という意味ですが。そういう事でいいんですね。 違うなら、具体的に例を挙げて何をしたいのか質問してください。 sub macro1()  dim res as range  if application.countif(range("A:A"), "定期") < 2 then  msgbox "NA"  exit sub  end if  set res = range("A:A").find(what:="定期",after:=range("A65536"), lookin:=xlvalues, lookat:=xlwhole, searchdirection:=xlprevious)  set res = range("A:A").findprevious(res)  res.select end sub

kero1192kero
質問者

お礼

私の質問内容が悪かった事により、推測で回答させてしまい誠に申し訳ありませんでした。回答内容ですが、自分の考えていた内容そのものでした。ありがとうございます。 問題無く動作したのですが、〇番目とか指定する箇所はどこなんでしょうか?たぶん、findpreviousで指定していると思うのですが、どうして2番目からなっているのか理解できないので説明してて頂けないでしょうか?あと、3番目の場合の記述方法も書いて頂けると嬉しいです。お手数をお掛けしますが、宜しくお願い致します。

関連するQ&A