• ベストアンサー

【エクセル】2つのブック間での値の貼り付けについて

データ元と転記先の2つのファイルがあります。 データ元を【入】転記先【出】と便宜上します。 【入】a(6+i)の値を【出】H2:HG2の間で検索して ない場合→転記を終了 ある場合→【入】H(6+i)の値を【出】(検索して引っ掛けた場所)(指定の値※6~170の間)へコピー というマクロを組みたいのですが、まだ初心なのでよくわかりません。 ご教授をお願いいたします。

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

  • ベストアンサー
  • Raistlin
  • ベストアンサー率63% (65/102)
回答No.1

こんなので良いんでしょうか。 Excel97で作成しています。 ※うまく行っていたらですが、行頭の字下げは全角スペースでしていますので、コピペ後に半角スペースに戻してください。 Sub MaP()   Dim SrcSht As Worksheet '転記元シート   Dim DatRng As Range '転記元データ範囲   Dim DstSht As Worksheet '転記先シート   Dim LblRng As Range '転記先ラベル範囲   Dim vBuf As Variant 'データ一時格納   Dim vRtn As Variant 'データ一時格納   Dim i As Long 'loop counter   Const lTrgtRw As Long = 7 '転記先行番号(仮置き)   Set SrcSht = Workbooks("入.xls").Sheets("Src") '転記元シートセット   Set DatRng = SrcSht.Range("A1:A1000") '転記元データ範囲セット   Set DstSht = Workbooks("出.xls").Sheets("Dst") '転記先シートセット   Set LblRng = DstSht.Range("H2:HG2") '転記先ラベル範囲セット   vBuf = DatRng '対象範囲内容を一度バッファにコピー   For i = 6 To 1000 'i行から1000行まで処理     On Error GoTo NGData     vRtn = Application.WorksheetFunction.Match(vBuf(i, 1), LblRng, 0) 'i行のデータがH2:HG2の何番目にあるか     If vRtn <> 0 Then DstSht.Cells(lTrgtRw, vRtn + 7).Value = SrcSht.Cells(i, 8) '転記先の対応列に転記元i行H列のデータを転記   Next i Exit Sub NGData: 'H2:HG2に含まれていないデータがあった時の処理   '今回は単に無視   vRtn = 0   Resume Next End Sub

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

関連するQ&A

  • マクロ 値の転記 再度

    マクロ 値の転記 再度 昨日はkyboさんに解答を頂き大変助かりました。 ありがとうございました。 教えて頂いたコードを別のマクロでも活用しよう思ったのですが どのように改変していけばいいのかまた悩んでいます。 度々で申し訳ありませんが、どなたか宜しくお願い致します。 やりたいこと 転記元のBに0以外の数字が入っている場合、転記先のA列に 同じ値を常に5回転記させたい。 "あ"を5回転記→1行あける→"う"を5回転記→(続く・・・) ★Sheet1 転記先(7行目から転記したい)   A ------------------- 7 あ 8 あ 9 あ 10 あ 11 あ -------------------- 12 空行 -------------------- 13 う 14 う 15 う 16 う 17 う -------------------- 18 空行 -------------------- 19 以下 5つの纏まりの枠が300行位まで続く ★Sheet2 転記元(5行目からデータがある)   A    B -------------------- 5 あ 6 あ 7 あ計  100 -------------------- 8 空行 -------------------- 9 い 10 い 11 い 12 い計  0 -------------------- 13 空行 -------------------- 14 う 15 う 16 う 17 う計  500 -------------------- 18 空行 19 (以下、続く) Sub テスト() Dim i As Long '転記元のデータ開始行は5行目 For i = 5 To 300  '転記元のB列が0以外  If Worksheets("転記元").Cells(i, "B") <> 0 Then    Worksheets("転記先").Cells((i - 1) * 5 + 1, "A").Resize(5) _ = Worksheets("転記元").Cells(i, "A")  End If Next i End Sub

  • Excel マクロ 値の転記

    Excel マクロ 値の転記 Sheet2をSheet1に転記したいのですが、A列だけは3回同じ値を転記 するのには、※をどのように変えたらいいのでしょうか? 宜しくお願い致します。 〔Sheet1〕転記先 A  B あ  10 あ  20 あ  30 い  40 い  50 〔Sheet2〕転記元 A  B あ  10 い  20 う  30 え  40 お  50 Sub テスト() Dim i As Long For i = 1 To 30    '↓※ココをどう書いて良いのかが分かりません Worksheets("Sheet1").Cells(i, "A") = Worksheets("Sheet2").Cells(i, "A") Worksheets("Sheet1").Cells(i, "B") = Worksheets("Sheet2").Cells(i, "B") Next i End Sub

  • ブックの転記で計算式も転記したい

    ブックの転記で計算式も転記したい データを転記するマクロを作成しました。 【知りたいこと】 その1: 転記元となるブックを毎回「master」という名前に変更してから作業をしています。 この一手間を省きたいと考えているのですが、開いているもう一つのブックを自動で 転記元の〔mst〕と認識させて作業を進めるにはどうしたら良いでしょうか? その2: 転記先のD列に、転記元(master)E列の数式を転記させるにはどうしたら良いでしょうか? このE列には、数値の値だったり、足し算・引き算・割り算などの計算式が混在しています。 また、転記先の書式は保ち、値もしくは計算式だけを転記したい。 宜しくお願い致します。 ---------------------------------------------------------- Sub 値の転記() Dim ent As Worksheet, mst As Worksheet Dim i As Integer, j As Integer Dim lstCel As Integer Set ent = Workbooks("転記先").ActiveSheet Set mst = Workbooks("master").ActiveSheet   '←★その1:このブック名の指定 lstCel = mst.Cells(Rows.Count, "B").End(xlUp).Row For i = 1 To lstCel ent.Cells(j + 2, "A") = mst.Cells(i + 2, "A") ent.Cells(j + 2, "B") = mst.Cells(i + 2, "B") ent.Cells(j + 2, "C") = mst.Cells(i + 2, "D") ent.Cells(j + 2, "D") = mst.Cells(i + 2, "E")'←★その2:ここだけ数式を転記 j = j + 1 Next i End Sub ----------------------------------------------------------

  • エクセル 特定の値の足し方

    A1が特定の値だった時、A2に指定した値を+したい A1の値はH5H6H7から選択する I5I6I7にはA1に足したい値が入ってるいる A1でH5が選択された場合はI5 A1でH7が選択された場合はI7 をA2の値に+したい。 この場合、どのような感じで式を作れば良いでしょうか? 皆さんの知識をお貸し下さいm(._.)m

  • エクセルのリンク貼り付けについて

    エクセルでセルを参照した場合、参照先のデータを値に変えてしまう方法はありませんか。 参照元が請求書なので、次々新しいデータに変わります。そうすると参照先も更新されてしまうので困っています。

  • Excel 隣接しない列に一発で値貼り付け

    Excel 隣接しない列に一発で値貼り付け 隣接する列に表示されたデータを、同じシートの隣接しない列に一発で値の貼り付けがしたいのですが、可能でしょうか?   A     B     C    D    E         1 チェック タイトル 名前1  名前2 説明 2 ○    野菜   人参   牛蒡  これは根菜類 3 ○          胡瓜       うり科の野菜です 4 5 ○    果物   バナナ  柿   暖色系の色です   G       H         I     J           K     …… 1 計算式   B列を値貼り付け 計算式   C列を値貼り付け  計算式  …… ■A列  :C列に文字入力がある場合「○」が表示されます     {=IF(OR($C1>""),"○","")} ■B-E列:他のシートの任意のセルの値をコピー     {=IF(ISERROR(INDIRECT("'シート名'!セル")),"",INDIRECT("'シート名'!セル"))} *C列の空白の場合は全ての列が空白である(A列の式はそのため) *C列に文字がある場合のB、D、E列の空白には意味がある。 *コピーではなく値の貼り付けを行いたい。 *貼り付け左記の列は飛び飛びである。 *行の長さは可変する。 今までは、A列を「オートフィルタ」で「○」のみ表示させ、B-E列を1列づつH、J、L、N列へ貼り付けていました。マクロもいろいろ考えたのですが、初心者のため応用が出来ません。 関数でもマクロでも頑張ってトライしますのでお知恵を頂けますでしょうか。 PC環境:Win XP / Excel 2003

  • Excelで別ブックに内容を転記する方法

    Excelで別ブックに内容を転記する方法を教えていただきたいです。 あるワークブック(転記先・画像上)上にデータの一覧表を作成したいと考えています。 その一覧表には項目が複数ありますが、全てではなく一部の項目のみ、 別のワークブック(転記元・画像下)から内容をコピーした上で、 自動的に転記先の表の最下行に追加できるようにしたいと考えています。 転記元のワークブックは複数ありどの列にどの項目の内容が書いてあるか、は変わりませんが、 何行分の項目が入力されているか、は一定ではありません。 項目1の記入があれば同じ行の他の項目も全て記入されています。 ただし転記先に必要のない項目(画像のXYZなど)もあり、 表と項目の並びも転記先と転記元で異なっています。 マクロを用れば可能かと思い自分なりに調べては見たところ、 ActiveSheetの指定した列の1行目~最下行を選択 ThisSheetの指定した列の最下行に張り付け という流れを必要な項目分だけ繰り返せばいいのかと思いましたが、 実際にどのように式を組み合わせていけばいいのかが分かりませんでした。 説明も稚拙で分かりづらいかと思いますが、 ご回答いただけましたら幸いです。宜しくお願いいたします。

  • Excel:値のある行だけをcsv保存したい

    エクセル(2003、2007)でcsvデータで保存をするマクロを作る際、 「式」ではなく、「値」がある行だけ書き出したいと考えております。 例えば図のようにsheet1に表があり、それを元にsheet2に データを転記する場合、sheet2にはそれぞれ転記する為の「式」 が入る事になると思います。 【=IF(Sheet1!A10="","",Sheet1!A10)】など このままマクロでcsvとして吐き出した場合、「式」が入っている行が 全て書き出されてしまうのですが、あくまで「値」が入っている行だけ csvとして抜き出したいです。 ※なお、csv書きだし自体は以下のサイトを利用させて頂いております。   ttp://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_050.html お手数ですが何か手法があれば、ご教授頂けると助かります。 宜しくお願い致します。

  • Excel 形式を選択して貼り付けで貼り付ける値は決まっている場合

    こんにちは。Excel2007を利用しています。コピーしたものを貼り付ける場合、形式を選択して貼り付けるがありますが、この中で値を貼り付けでの質問になります。 例えばA1に式が書いてあって、そこにデータを入力します。そこで値が「100」となったとします。これを形式を選択して貼り付けでB1に値貼り付けをします。これで値が貼り付けられますが、こうではなく、B1に貼り付けるときにその特定のセルに貼り付ける場合は常に値の貼り付けで行うことは可能でしょうか? ショートカット、マクロではなく、何か設定か式で可能ではないでしょうか?よろしくお願いいたします。

  • チェックボックスの値をTRUE/FALSE以外にするには?

    ユーザーフォームに入力した内容をワークシートに転記するマクロを組んでるのですが、チェックボックスの場合、値がTRUE/FALSEになります。 これを、TRUE=1、FALSE=空白にする方法はないでしょうか? ちなみに、マクロには下記のように書いて転記しています。 .Cells(I, 3).Value = Me.chkbox1.Value

このQ&Aのポイント
  • エクセルで特定の列に結合セルがある場合、結合を解除して各セルに内容を転記する方法を教えてください。
  • 結合セルを解除する方法は関数ではできないため、VBAを使用する必要があります。
  • 対象の列に複数の結合セルがある場合は、複数回に分けて実行することができます。
回答を見る

専門家に質問してみよう