• ベストアンサー

セルの値に応じてシート間をデータ移動させたい

シート名が 「1」 「2」 「3」 「4」 「5」 という5つのシートがあります。 A2とA4にデータが入力されていて、 D4とI4に入力した値(シート名)に応じて、 マクロでシート間をデータ移動させたいのですが、 どなたかおわかりの方がいらっしゃいましたら教えて下さい。 (移動先にデータが存在する場合は上書きして問題ありません) 例) D4に「1」 I4に「3」と入力して実行すると、 シート「1」からシート「3」にA2とA4の値が移動するマクロを作成したい。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (711/1467)
回答No.5

すみません、移動でしたね。   Sheets(InpSheet).[A2,A4].ClearContents を   Exit Sub の上に入れて下さい。 質問はよく読むべきですね。

rabbit78
質問者

お礼

幾度もの補足にも迅速にお答えいただき恐縮です。 これで作業にかかる時間が大幅に短縮できます。 あらためましてありがとうございました。

その他の回答 (4)

  • SI299792
  • ベストアンサー率48% (711/1467)
回答No.4

#1です。 すみません。 シートが「1」「2」「3」「4」「5」だけで、他のシートはないという設計をしてしまいました。 そんな訳ありませんよね。実際は画像のようなコントロールシートを別に設けますよね。 で、改造版です。 ' Option Explicit ' Sub Macro1() '   Dim InpSheet As String   Dim OutSheet As String '   InpSheet = [D4]   OutSheet = [I4]   On Error GoTo 100   Sheets(OutSheet).[A2] = Sheets(InpSheet).[A2]   Sheets(OutSheet).[A4] = Sheets(InpSheet).[A4]   On Error GoTo 0   Exit Sub 100 '   If Err = 9 Then     MsgBox "指定シートがありません", vbCritical   Else     Error Err   End If End Sub

rabbit78
質問者

補足

改造版ありがとうございます。 説明が稚拙で申し訳ありません。 データは移動したのですが、 移動元から移動先へコピーされていて、 移動元のデータが削除(クリア)されていないのです。 (「移動」という表現が良くなかったのかと思います) 移動元のデータを削除(クリア)する方法につきまして、 併せてご教授いただければ幸いです。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

・>A2とA4にデータが入力され シートを明記してないのがわかりにくい。 ・「移動」なんていう画像が見えるが、ボタンでも設けて、 クリックしたら、質問のことを実現したいのか。ー->そう解釈した。 質問者のレベルではそこまでしない方がよいと思うが。 ・シート名を「1」・・と言っているが、 ー>シート名は「文字列」で指定しないとダメ、というのは知っているのかな。 こういうのは、イーと名に普通避けるのでは。 そこで、「1」「3」は全角数字の1、3とした。 ここが本件を難しくしていると思う。 ーー シート1に図形の四角を設けて、そのクリックイベントにマクロを登録した。 ーー Sub 正方形長方形1_Click() test01 End Sub ーー test01 は、具体的には、標準モジュールに Sub test01() Dim s1 As String Dim s2 As String s1 = StrConv(Worksheets(1).Range("D4"), vbWide) MsgBox s1 s2 = StrConv(Worksheets(1).Range("I4"), vbWide) MsgBox s2 MsgBox Worksheets(s1).Range("A2") MsgBox Worksheets(s1).Range("A4") Worksheets(s2).Range("A2") = Worksheets(s1).Range("A2") Worksheets(s2).Range("A4") = Worksheets(s1).Range("A4") End Sub MsgBoxの行は、テスト確認用なので、本番では省くこと。 ーーー シート「1」のデータ例のイメージ 123 <-A2 この辺に「ボタンを貼り付け」 345 <-A4 1 <-D4 3<-I4 シート「3」のイメージは省略 勘違いしているようなら、すみません、無視して。 == 本件は、Excel関数でもできるのでは。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

あくまでサンプルですのでエラー処理は入れていません Sub sample()   Sheets(Range("D4")).Range("A2").Cut Sheets(Range("I4")).Range("A2")   Sheets(Range("D4")).Range("A4").Cut Sheets(Range("I4")).Range("A4") End Sub

  • SI299792
  • ベストアンサー率48% (711/1467)
回答No.1

シート名を入れた後、ボタンを押すという設計です。 ' Sub Macro1() '   On Error GoTo 100   Sheets([I4]).[A2] = Sheets([D4]).[A2]   Sheets([I4]).[A4] = Sheets([D4]).[A4]   On Error GoTo 0   Exit Sub 100 '   If Err = 9 Then     MsgBox "指定シートがありません", vbCritical   Else     Error Err   End If End Sub

rabbit78
質問者

補足

早速のご回答ありがとうございます。 試してみたのですが、データが移動せず、 指定シートがありませんの表示が出ます。 指定セルやシート名を変更してみても同じでした。 もう少し検証してみたいと思うのですが、 次は明日の夜か明後日の朝になりそうです。

関連するQ&A

  • Excelのシートからシートへデータを移動したい

    Excelのシートで作成されている申込書(シート)があり、現在はその申込書シート(セル)に記載されている情報を別のシート(顧客データとして管理しているシート、複数行存在しています)に手入力しています。 この手入力の作業をマクロか関数で簡単にしたいのですが、下記の点がクリアできる良い案が分かる方がいたら教えて頂きたいです。 (1)申込書シートは顧客データシートに情報を移動したら、都度上書きしていきたい⇒申込書シートは同じbookで管理しないため(上書きについては申込書内容を都度手作業で貼り付けするつもりです) (2)顧客データシートは顧客が増える毎に2行目、3行目・・・というようA列が空欄になっている一番上に、申込書データの内容が反映されるようにしたい。 (3)貼り付けられたデータ(セル)は関数ではなく、値(文字)が貼り付けられるようにしたい。((1)のように申込書シーは都度上書きしたいため) 分かりづらい質問で申し訳ありません。。 ちなみにマクロは作成したことがありませんが、マクロでできるのであれば挑戦したいと思っています。 ご回答よろしくお願い致します。

  • セルの値に応じて数式を入力するシートを変えたい

    シート名が 「aaa」 「bbb」 「ccc」 「ddd」 という4つのシートがあります。 シート「aaa」のD4セルに入力した値(シート名)に応じて、 (上記で設定したシート)のF7セルに "=SUM(F5:F6)"という数式を入力したいのですが、 おわかりの方がいらっしゃいましたらご教授いただければ幸いです。 例) シート「aaa」のD4セルに「ccc」と入力して実行すると、 シート「ccc」のF7セルに「=SUM(F5:F6)」の数式を入力するマクロを作成したい。 (シート「aaa」のD4セルに「ddd」と入力して実行すると、 同様に、シート「ddd」のF7セルに数式をマクロで入力したい)

  • シートコピーと値の転記 シート名変更マクロを

    エクセル2010で マクロのご教授をお願いいたします。 BOOK1の Sheet1 A1~A10に 数値1000が入力されているとして Sheet1のシートのコピーを作成 Sheet1にもどり A1~A3の値だけコピーして 作業列C1に 値を貼り付け A1~A10 をクリアーにしたのちに  ※↓が うまくいきません。 A1の値→ A8 A2の値→ A9 A3の値→ A10 に入力 させるマクロは どうなるでしょうか? マクロの記録で いろいろと やってみましたが どうも ※の部分が うまくいきません どう考えてもエクセルに対しての 理解不足だと思われますが、ご教授のほどお願いします。 おこなった自動マクロの記録は↓です。 マクロの記録開始する 名前 シートコピー Sheet1を右クリックして移動またコピー コピーを作成にチェックをいれ OK コピーシートが作成される。 Sheet1をクリックしなおして A1からA3をコピー  作業列として C1に 形式を選択して貼り付け 値 A1~A10を delete でクリア C1~C3を選択 コピー A8に 形式を選択して貼り付け 値 マクロの記録終了。 あと Sheet1をコピーするさいに シート名を前日の日付に自動的に変更できればと いいなと 考えておりますが できるのでしょうか? 例えば、本日でいえば シート名→ 0112 のような シート名を変更できればすてきだと おもいます。 どうぞ よろしくお願いします。

  • EXCEL VBA シート内の特定のセルに値が入…

    EXCEL VBA シート内の特定のセルに値が入力された際に処理を実行するプログラム EXCELシート内の特定のセルに値が入力された際に処理を実行するプログラムをEXCEL VBAで作成したいと考えています。 EXCELに計測データを取込み、このデータが設定値以外の場合のみ、トリガーを出す様なイメージで使いたいと思います。 どの様に考えれば良いでしょうか?サンプル等ありましたら紹介ください。 上記質問の”トリガー”について補足します。 あるセルに値が入力されたら、マクロを実行するという風にしたいという意味です。 単純にマクロ実行を手動で行うのでは無く、ある値が判定値以外の場合に他アプリケーションを操作したいという意味です。。

  • 別のブックのセルの値をコピーするマクロについて

    ExcelのVBAのマクロに関する質問です。 複数のブックのセルの値をコピーするマクロについての質問なのですが、現在以下のファイルがあります。 サンプル1.xls サンプル2.xls サンプル3.xls データ.xls そして、 サンプル1のセルA1~D1までの値をデータ.xlsファイルのシート1のセルA1~D1まで、 セルA2~D2までの値をデータデータ.xlsファイルのシート2のセルA1~D1まで、 サンプル2のセルA1~D1までの値をデータ.xlsファイルのシート1のセルA2~D2まで、 セルA2~D2までの値をデータデータ.xlsファイルのシート2のセルA2~D2まで、 サンプル3のセルA1~D1までの値をデータ.xlsファイルのシート1のセルA3~D3まで、 セルA2~D2までの値をデータデータ.xlsファイルのシート2のセルA3~D3まで、 上記のような形でコピーしたいのですがマクロがわかりません。 データ.xlsにボタンを作成し、そのボタンを押すとこの処理が実行されるようにしたいです。 どなかた方法を教えていただけますでしょうか。ご回答お待ちしております。 ※ファイルの名前は今回はサンプル1などとしましたが実際は違う名前も使用します。 また、ファイルの数も今回は3つにしましたが増減します。

  • excel 別シートへのデータの転記

    sheetが二枚あります。 sheet1 元データ sheet2 転出先(三種類あります) sheet1のA列に〇がついていたらsheet1Q列のシート名を見て、 転出先に同じデータがあるか?無ければ新規作成をするか? 新規作成をする場合には以下のように、 そのシート名の各セル番地にデータを転記。 sheet1のA列2行目移行同じ繰り返しで○があるか見に行く。 sheet1の1行目は項目名になります。 A2に○が付いていてQ列のシート名が100だった時 A2のデータを以下のように。 sheet1   sheet2(シート名は100) P列の値 → A7へ C列の値 → A8へ H列の値 → A9へ I列の値 → A10へ F列の値 → E5へ L列の値 → D6へ M列の値 → D7へ K列の値 → F9へ J列の値 → D8へ 続けてA4に○が付いていてQ列のシート名が100だった場合。 sheet1   sheet2(シート名は100) P列の値 → A12へ C列の値 → A13へ H列の値 → A14へ I列の値 → A15へ F列の値 → E10へ L列の値 → D11へ M列の値 → D12へ K列の値 → F14へ J列の値 → D13へ 以上のようなことがしたいのですが、 参考書でサンプルなどを見てやっているのですが、 なかなかうまくいきません。 コードのご教示をお願いたします。

  • 全シートを選択し、それぞれ特定のセルの値をシート名とするマクロを教えて

    全シートを選択し、それぞれ特定のセルの値をシート名とするマクロを教えてください。 Worksheets.Select ActiveSheet.Name = Range("A1").Value ではダメなんですね… 記録マクロ以上のことはほとんど何もわからない、マクロ初心者です。 条件としては、  ・シート数はその都度変わる  ・シート名にしたいセル番地は決まっている です。 具体的には、「請求書」などの決まったフォーマットで作成された複数のシートがあり、 決まったセルに入力された「宛名」をそれぞれのシート名にしたい というような場合です。 また、同じ「宛名」で複数のシート名があったときに備えて、 新しいシート名の前に数字を振りたいです。 例) Sheet 1 → 1田中様 Sheet 2 → 2佐藤様 Sheet 3 → 3山田様 Sheet 4 → 4鈴木様 Sheet 5 → 5山田様 のように。 数字は識別できればいいので(エラーがでなければいいので)、なんでも構いません。 シートに順に番号を振るのでも、元のシート名の一番右を取るのでもいいです。 (そんなマクロがあるのかもわからないのですが) 宛名が複数あるものだけ選んで番号を振るのでもいいのですが、大変そうな気がするので・・・ マクロ自体よくわかっていないので、情報が不足しているかもしれませんが、 詳しい方、教えてください。 よろしくお願いいたします。

  • エクセル 入力シートのデータを別シートに書き込む

    エクセル 入力シートのデータを別シートに書き込む 1.Sheet1のA2に数字、B2に数字、C2に数字、D2に数字、E2に数字、F2に数字、G2に数字、にを入力する。 2.内容確認後、入力ボタンを押すと、 Sheet2のF2にSheet1のA2の数字、 Sheet2のH2にSheet1のB2の数字、 Sheet2のI2にSheet1のC2に数字、 Sheet2のJ2にSheet1のD2に数字、 Sheet2のK2にSheet1のE2に数字、 Sheet2のL2にSheet1のF2に数字、 Sheet2のM2にSheet1のG2に数字が反映され、sheet2の入力されたデータが一列づつたされていく。 つまり。sheet1は入力シートで、同じセルに値を入力します(次回はデータが上書きされる)が、sheet2では、集計表の1列ずつ下に新しく記録されていく。 このような入力フォーム(マクロ)を作りたいと思っています。 わかりづらい質問で申し訳ありませんが教えていただけませんでしょうか。 よろしくお願いします。

  • Excelのセルのデータの移動について教えてくださ

    Excelの文書名(A)の「シート見出し3」のセルA1のデータを、デスクトップのExcelの文書名(B)のセルA1移動できるでしょうか。 もし、できる場合、文書名(B)に既に6行分のデータが存在しているときはセルA7に移動あるいは、既に7行分のデータが存在しているときはセルA8に移動できるでしょうか。 お教え頂けたら幸いです。よろしくお願いいたします。

  • セル内の文と同じ名前のフォルダにシートを保存させる

    マクロのフォームにチェックボックス2個とコマンドボタン1個があります。 Excelブック内にシートが3つあり、シート1内のセルA1,B1に入力されている内容をファイル名(例:A1_B1)にし、フォームのチェックボックス1にチェックを入れてコマンドボタンを押すとシート2、チェックボックス2にチェックを入れてコマンドボタンを押すとシート3を、C1に入力されている内容と同じ名称のフォルダに保存させるマクロを作成したいです。 なお、A1,B1,C1は固定で移動はしません。 また、保存先のフォルダは用意されています。 ファイル名が重複する場合は上書きするか確認したいです。 現在、マクロを勉強中です。 図々しいとは思いますが、もし可能であれば、どういう意図でコードを使用しているか等の解説もしていただければ助かります。 どうぞよろしくお願いいたします。

専門家に質問してみよう