• ベストアンサー

excel マクロ 変換

すいません教えてください 1)Sheet3にマスターがありA1=日 B1=001(勤務コード)があります。 2)Sheet1のA1=日 Sheet1のコマンドボタンをクリックするとSheet2のA1=001と転写表示させたいのです 3)Sheet3のマスターには、夜=002 早出=003などSheet3にはA55まであります。 どのような記述が良いのか教えてください

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

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

デタラメに書き換えても当然動きません。 教わればあとはご自分で出来るつもりだったのかもしれませんが、状況説明を手抜きして「A1」とか言ってるので、こういった二度手間になります。次回は最初から丁寧に、あなたの本当をご相談に書くようにしてみたらどうでしょう。 >一括で変換させたい ではそのようにします。 sub macro2()  with worksheets("提出").range("A10:AH44")   .formula ="=VLOOKUP(入力!A10,勤務マスタ!$B:$E,4,FALSE)"   .value = .value  end with end sub 今回もまだ、どこのシートの何列に何を記入してあってどれを持ってきたいのかとか情報がありませんので、このマクロでは正しく作動しません。ご自分できちんと修正してください。 こちらのマクロは見つからない(間違った)データが記入してあったりしたとき、イチイチ警告を出していてはきりがないので、エラー値を計算します。 #参考 >関数だと消す人もいるので シートを保護しておくだけです。

pop2003
質問者

お礼

本当に何度もすいませんでした。 正確に質問します。

その他の回答 (1)

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

わざわざマクロとか使わずに、シート2のA1に =IF(Sheet1!A1="","",VLOOKUP(Sheet1!A1,Sheet3!A1:B55,2,FALSE)) といった具合に仕込んでおくだけで十分に見えますが。 まぁ敢えてマクロを使いたいなら private sub Commandbutton1_click()  dim h as range  set h = worksheets("Sheet3").range("A1:A55").find(what:=worksheets("sheet1").range("A1").value, lookin:=xlvalues, lookat:=xlwhole)  if h is nothing then   msgbox "NOT FOUND"   exit sub  end if  h.offset(0, 1).copy destination:=worksheets("Sheet2").range("A1") end sub とかなんとか。

pop2003
質問者

お礼

すいません!入力シートにはA10:AH44があり一括で変換させたいです。 例)  入力Sheet        提出Sheet  1  2  3      1   2   3 A日 日 夜   →A 001 001 002 B           B C           C わからずらい質問ですいません!   

pop2003
質問者

補足

さっそくの回答ありがとうございます。実際にやってみましたがうまくいきません!勤務マスタ=Sheet3、入力=Sheet1、提出=Sheet2です。 Set h = Worksheets("勤務マスタ").Range("B5:B82").Find(what:=Worksheets("入力").Range("A10:AH44").Value, LookIn:=xlValues, lookat:=xlWhole) If h Is Nothing Then MsgBox "NOT FOUND" Exit Sub End If h.Offset(0, 3).Copy Destination:=Worksheets("提出").Range("A10:AH44") Sheets("提出").Select Range("B1").Select   Not FOUNDになってしまいます! 関数だと消す人もいるので・・・すいません教えてください

関連するQ&A