アプリ版:「スタンプのみでお礼する」機能のリリースについて

 似たようなものがあるのですが、うまくいかないため、
詳しい方お願いします。

 指定した2種類の文字列間のデータをコピーするエクセルVBAです。
データは、A1~A50の1列に入っています。
たとえば
北海道:札幌50
函館 20
青森 青森60
弘前30
岩手 盛岡50
rt 500 30
秋田 秋田1
と続きます。
「青森という文字列以降」から「岩手という文字列の前まで」の間のデータ
をコピーして、Sheet2へ貼り付けたいです。
可能であれば、青森のデータは、Sheet2のA5,A6へ
岩手のデータはSheet2のA8,A9へ貼り付けたいです。
よろしくお願いします。
エクセル2007です。

A 回答 (1件)

状況のご説明が限定的過ぎて、結局「何をどうしたい」のか随分曖昧なままのご質問です。



○岩手から次は何までをA8、A9に貼りたいのか
○そもそも「青森から岩手」「岩手から次のナニか」と具体的にどのように指示したいのか
○貼り付け先は一体どういう段取り(つもり)でA5でありA8になるのか


sub 青森から岩手の前まで()
 dim s1 as string
 dim s2 as string
 dim h1 as range
 dim h2 as range
 dim h as range
 dim Target as range

’実際にヤリタイ事に応じて段取りを工夫する
 s1 = "青森" 
 s2 = "岩手"

’検索
 set h1 = range("A1:A50").find(what:=s1, lookin:=xlvalues, lookat:=xlpart)
 set h2 = range("A1:A50").find(what:=s2, lookin:=xlvalues, lookat:=xlpart)
 if h1 is nothing or h2 is nothing then
  msgbox "NOUT FOUND " & s1 & " or " & s2
  exit sub
 end if

’転記
 set target = worksheets("Sheet2").range("A5") ’状況に応じて工夫する
 for each h in range(h1, h2)
  if h.value like "*" & s1 & "*" then
  ’見つけたところから
   target = mid(h.value, instr(h.value, s1))
  elseif h.value like "*" & s2 & "*" then
  ’見つけた前まで
   target = left(h.value, application.max(0, instr(h.value, s2) - 1))
  else
  ’間はそのまま
   target = h.value
  end if
  set target = target.offset(1)
 next
end sub


まずはそれぞれ寄せられた回答マクロを実際に動かして動作を確認し、改めてどうしたかったのか整理し直してから、別途ご相談として投稿し直してみて下さい。
    • good
    • 1
この回答へのお礼

いろいろと工夫していただきましてありがとうございます。
実行結果は想定していたものと同じでした。
 ありがとうございます。

お礼日時:2014/08/31 09:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!