• ベストアンサー

マクロについて質問です。

画像のように別のブックがあって同じレイアウトでデータが並んでいるとします。ブック1が主のデータです。ブック2のA列にある数字をめやすに、ブック1のA列に同じ数字があったらそこから下7行横4列を置き換えるということはできるのでしょうか。画像でいうと、数字の5と8の行列が入れ替えられる感じです。もし、こういうことができるマクロがありましたら、教えていただきたいです。よろしくお願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

No.1です。 >ブック1の標準モジュールとしてブック1以外の開いているブックからとすることはできるでしょうか。 ↓のコードをBook1の標準モジュールにしてみてください。 Sub Sample2() Dim i As Long, c As Range, wB As Workbook, wS As Worksheet Set wB = Workbooks(2) Set wS = wB.Worksheets("Sheet1") With ThisWorkbook.Sheets("Sheet1") For i = 1 To wS.Cells(Rows.Count, "A").End(xlUp).Row If wS.Cells(i, "A") <> "" Then Set c = .Range("A:A").Find(what:=wS.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then c.Offset(, 1).Resize(7, 3).Copy wS.Cells(i, "B") End If End If Next i End With End Sub 尚、前提条件として、 (1)一旦BOOK1を開いておく (2)メニューバーのファイル(Excel2007の場合はOfficeボタン)→ 開く → 保存場所から「Book2」を開く (3)メニューの表示から「整列」で二つのブックを並べて表示しておく。 となっているとします。 ※(3)に関しては無理に並べて表示しておく必要はありません。 別窓でBook1を開いている場合はエラーとなります。m(_ _)m

yoshimitsu525
質問者

お礼

助かりました。ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 一例です。 Book2の標準モジュールです。 Sub Sample1() Dim i As Long, c As Range, wB As Workbook, wS As Worksheet Set wB = Workbooks("Book1.xlsx") Set wS = wB.Worksheets("Sheet1") With ThisWorkbook.Worksheets("Sheet1") For i = 1 To .Cells(Rows.Count, "A").End(xlUp).Row If .Cells(i, "A") <> "" Then Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then c.Offset(, 1).Resize(7, 3).Copy .Cells(i, "B") End If End If Next i End With End Sub ※ Book2のSheet1のA列に検索したいデータは7行おきにあるとします。 ※ Book1が開いていない場合はエラーとなります。 (Book1を開く場合は保存場所のフルパスを記載します) とりあえずはこの程度で・・・m(_ _)m

yoshimitsu525
質問者

補足

回答ありがとうございます。説明が下手で申し訳ないのですが、ブック1の標準モジュールとしてブック1以外の開いているブックからとすることはできるでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 今日の日付が入った行のデータを取得するマクロ

    エクセルで別のブックに入っているデータを今日の日付が入っている行にコピーする、あるいはその行から貼り付けるマクロを教えてください。 具体的には例えば、 1)日付が順番にBook1 A列に縦に並んでいます。 Book 2にあるA1:D1のデータをBook1のA列にある本日の日付の横、例えばA10にあるとすればB10:E10にコピー・貼り付けしたい。 2)同様に日付が順番にA列に縦に並んでいて、本日の日付がA10にあり、B10:E10のデータをそのひとつ下のB11:E11にコピー・貼り付けしたい。 宜しくお願いいたします。

  • EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか?

    EXCELの「行列を入れ替える」マクロについてどなたか教えていただけないでしょうか? 下記のようにならんだDATAがあります。   A列   B列  C列  D列  E列 (1行)2002/12/17 15240 15280 15220 15220 (2行) (3行) (4行) (5行)2002/12/18 15250 15250 15210 15210 (6行) (7行) (8行) (9行)2002/12/19 15220 15310 15220 15310 (10行) (11行) (12行) (13行)2002/12/20 15220 15260 15210 15230 (14行) (15行) (16行) (17行)2002/12/24 15300 15310 15270 15310 (18行) (19行) (20行) (21行)2002/12/25 15300 15340 15300 15600  . . . . . . . . . . . . . . . . . . . . . . . と,このようにDATAは日付の横に数値が4つずつ横に並んでおりますが、この4つの数値をその4つ目の数値の真横のF列から縦に4つ並べたいのですが、一気にできるマクロがないものでしょうか?下記のようにです。   A列   B列 C列 D列 E列  F列 2002/12/17            15240                  15280                  15220                  15220 2002/12/18            15250                  15250                  15210                  15210 2002/12/19            15220 15310 15220 15310                   . . .                    といった感じに一気にマクロで処理してしまいたいのです。DATAはかなりの行数あり、すべて3行の間隔があります。日付の横に4つの数値が規則的に並んでいるというものです。何回でもマクロボタン一発で4つの横に並んだ数値のみを縦に並べた4つの数値にしたいのです。つたない説明で大変申し訳ありませんが、どなたかわかる方お教えくださいませ。

  • エクセル:マクロの起動条件

    お世話になります。 以下の条件でのマクロを起動する方法、及びそのマクロを教えてください。 《条件》 ブックを開いた時、あるシートのC列でデータが入っている最下行の行番号とA列のデータが入って最下行の行番号の差が100以下だった場合、マクロを実行する。 (なおC列の行番号の方が必ず大きいです) ちなみに実行したいマクロは1~6の手順です。 1.ブックを開いたとき 2.「入力用」という名前のシートのC列でデータが入っている最下行の行番号とA列のデータが入っている最下行の行番号の差が100以下だった場合 3.「入力用」というシートにかかっているシートの保護をはずし 4.データが入っているC列の最下行のA~Z列を選択して、50行分 下にコピーする。  (例えば、C列の最下行が350行の場合、A350~Z350まで を選択したあと400行まで下にコピーする。) 5.再度シートの保護をかけ 6.A列でデータが入っている最下行の1つ下のセルを選択する ちなみに、2の条件に当てはまらないときはマクロを実行しません。 またC列の最下行よりA列の最下行が大きい数字になることはないはずですが、もし同じかA列の方が大きい場合、「エラー:C列よりA列が大きくなっています」と画面に表示させたい。 なお、行番号の差:100、選択するA~Z行、50行分下にコピー は変わる可能性があるので、修正する場合どの部分を修正すればよいかも教えてください。 よろしくお願いします。

  • <文字列マクロについて>

    <文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、  指定した数だけ並べる    あいうえお    ←A1セルからE1まで5列(これは状況により変わる)       ↓(マクロ実行:3行同じ数だけ並べるという指定)  あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ  あ  あ  い  い  い  う  う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい  う  え  え  え  お  お  お ?規則的に並んだデータのまとまりをセットで移動する。  例だと5つの塊(これは変数とおきたい)    あ A              a  い B              b  う C               c   え D               d  お E              e    ↓(マクロ実行)  あ  い  う  え  お  A  B  C  D  E      ・  ・  ・  ・    a b c d e    

  • 【マクロ】初心者です。色々教えていただきたいことがありますのでご教授く

    【マクロ】初心者です。色々教えていただきたいことがありますのでご教授ください。 やりたいことは下記になります。 元データ A B C 1 2 3 4 5 6 新データ D E F 3 1 2 3 1 2 6 4 5 6 4 5 かなり簡略化で書いていますがやりたいことを記述していきます。 (1)マクロの記述しているブックのシート1にボタンを作成する。 ボタンから別のブックの元データ(CSVファイル)を選択。 元データのブックのシート1をマクロブックのシート2にコピーします。 コピーデータを加工、修正していきます。 (2)次に列のデータを入れ替えます。 これは法則がないので一行目の行をみて判断します。 (ex.C行の列ならD行に挿入する) (3)列を入れ替えた後、 3 1 2 6 4 5 になっていますがこれを 3 1 2 3 1 2 6 4 5 6 4 5 というふうに一行を二行にしていきます。 (4)最後にorder byします。 1、3、2列目の順にorder byします。 以上がやりたいことになります。 特に(1)がよくわからずボタンを使用時に 別ブックのデータをコピー、貼り付けるのは どうしたらいいのでしょうか? どなたかご教授ください。 よろしくお願いします。

  • 【エクセル・マクロ】 繰り返し貼り付けがしたいです

    仕事で、大量のコピペをしなきゃいけなくなり、 マクロを組みたいのですが、素人でよく分からず投稿させて頂きました。 宜しくお願い致します。 参考画像のように、 A列にあるデータを、B列の数に合わせて C列(色付けしてある列)に繰り返し貼り付けをしたいのです。 ※参考画像では、分かりやすいように姓名にしてありますが、 本当は文章とか数字とかを使います。 参考画像ではA列に5行分、B列に20行分しかありませんが、 本当はA列に50行分、B列に3,000行分あります。 ですから、A列の50行を、3,000÷50=60回も貼り付けするのが面倒で、 3,000という数字も、毎回1,000~10,000と変動するので、 今後のことを考えると、マクロを組んだ方が早いのでは、と思いました。 また、欲を言えば、A列に数式を入れていることもあり、 C列に数式の繰り返し貼り付けをおこないたいのですが、 これは難易度がぐっと上がるのでしょうか? 他力本願で大変申し訳ございませんが、 何卒宜しくお願い致します。

  • エクセル2000(マクロ)を使っていくつかの処理を一度にしたい・・・

    A列に下記の例のようなデータがあり、件数は毎日変わります。 マクロに登録したいのは (1)B列にはA列の最終行まで、(例えば)1、2と繰り返し入力させたい (2)B列に2のデータが入っているものだけを抽出し、抽出したA列のデータだけをコピーし、別のシートに貼り付けたい というところまでを一つのマクロで処理させたいのですが、うまくいきません。 A列のデータ数は必ず偶数で、数字のみで出てきています。貼付け先は日々のデータを月ごとに表にしていくため、毎日変わります。 ※土日祝日分はデータがでてきませんが、項目には記載がありますので、土日祝日は飛ばさなければいけないようになっています。 別シートは行の項目が日付で、列に抽出したデータを入れるようなレイアウトになっています。 A列   B列 1    1 1    2 2    1 0    2 10    1 2    2 13    1 2    2 ちなみに私が取得するデータはA列のデータだけなので、B列に入れるデータは1、2でなくてもなんでも大丈夫です。また処理や他にいい考え方等があれば教えてください。 宜しくお願いします。

  • EXCELのマクロがわかりません・・・

    現在、A列にデータが並んでいるのですが、 これを7つ区切り(例:A1~A7、A15~A21)にして、 別シートに用意した表に行列を入れ替えて、 貼り付けるマクロを作っているのですが、 なにぶんVBは素人ですので、よくわかりません。 今作ろうとしているマクロは、 「元データ」セルのA1からA7までをコピーして、 「作成データ」セルのB2を起点として、 コピーした内容の行列入れ替えを行い貼り付け、 以後、「元データ」のコピー範囲を7つづつ 下にずらし、「作成データ」の貼り付け起点を 1つづつ下にずらして、「元データ」のA列の 最後までくりかえすものです。 必ず「Range」文で引っかかってしまうのですが、 何か構文的におかしいでしょうか? かなり急ぎですので、 わかる方、よろしくお願いしますっ!! 下に、作成したマクロを貼り付けます。 Sub Macro3() ' ' Macro3 Macro ' マクロ記録日 : 2005/12/5 ユーザー名 : *** Worksheets("元データ").Activate 開始行 = -6 終了行 = 0 ペースト行 = 0 Do 開始行 = 開始行 + 7 終了行 = 終了行 + 7 ペースト行 = ペースト行 + 1 開始セル番号 = "A" & 開始行 終了セル番号 = "A" & 終了行 ペーストセル番号 = "B" & ペースト行 Range("開始セル番号:終了セル番号").Select Selection.Copy Sheets("作成データ").Select Range(ペーストセル番号).Select Selection.PasteSpecial Paste:=xlAll, Operation:=xlNone, SkipBlanks:=False _ , Transpose:=True Loop End Sub

  • エクセルマクロを使って、表を完成させたいのですが

    お尋ねします。 ブックAのシート1には、下記のように数字が入っています。 それをもとに、ブックBのシート1に表を完成させたいのですが、どのようにすればいいでしょうか。 ブックBは、ブックAのA列の値がそれぞれいくつあるかを示したものです。 ブックA    A列 1行 2A  2行 1A 3行 1C 4行 4D 5行 5D 6行 1A ※行数はこれ以上ありますが、A列には、数字とアルファベットの  組み合わせで2桁で構成されています。 ※アルファベットはA~Dで、数字は1~5です。 ブックB    A列 B列 C列 D列 F列 1行  2      1  2行  1 3行  4行            1 5行               1 ※ブックAのA列の値からブックBにブックAの値が  それぞれ何個あるかを示したいのです。  よろしくお願いします。

  • コピーするExcelマクロを作りたいです(2)

    「コピー元」ブックから「コピー先」ブックにコピー&ペーストを 行うマクロを作りたいのですが、列の計算が複雑で困っています。 Excelブックのキャプチャ画像を加えて再投稿します。 画像ではシートになっていますが、画面左のシートのような表から 右のシートの当てはまるセルにデータを写すようにお考えください。 「コピー元」ブックは月に一度ダウンロードするデータで、ピボット テーブルです。一月ごとに、前月の列が各営業所ごとに増えていき ます。行には、商品ごとの売上げが入力されています。 また、各営業所ごとに、年度合計列があります。(営業所の数は10 前後、商品の行は50以上はあります。) 「コピー先」ブックは、あらかじめ年度末までの行列セル、合計列が 用意されていて、「コピー元」ブックからデータを移動してくるのみ でレポートとして毎月提出する体裁です。 単純にコピーするだけならばよいのですが、毎月各営業所一列ずつ 増えていくというのが式にして表せません・・・また、できる限り 数値の変更を最低限にして、毎年度利用できるマクロにするという 希望もあります。 ご面倒かと思いますが、お力を貸してください。

ほくろの傷跡の治し方
このQ&Aのポイント
  • ほくろの傷跡の治し方について解説します。
  • 傷跡の治療法としては、レーザー治療が一般的です。
  • また、日常的なスキンケアや保湿も大切です。
回答を見る

専門家に質問してみよう