エクセルで空白のセルを探して貼り付け

このQ&Aのポイント
  • エクセルVBAを使用して、指定のセルをコピーし、空白セルを探して貼り付ける方法について質問しています。
  • 質問者は、作成したVBAがうまく動作しておらず、修正方法を求めています。
  • 現在のVBAでは、指定の列の空欄ではなく、一番下の行に貼り付けてしまう問題が発生しています。
回答を見る
  • ベストアンサー

エクセルで空白のセルを探して貼り付け

エクセルVBAでSheet2の指定のセルをコピーして、 Sheet1にある表の中の指定の列の空白セルを探して貼り付けるVBAを作成したいのですが、うまく出来ません。 Sheet1の表は1行目、2行目は見出しの項目が並んでいます。 3行目から50行目までは値を入力するようになっていて、 51行目はそれらをの集計が表示されるようになっています。 下記のVBAを作成したら3行目~50行目までの空欄に貼り付けず、 52行目に貼り付けてしまいます。 ----------------------------------------------------------- Sheets("Sheet2").Range("B6").CurrentRegion.Copy Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1).PasteSpecial xlPasteValues Application.CutCopyMode = False ------------------------------------------------------------ 修正して頂けないでしょうか? 宜しくお願いします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> 51行目はそれらをの集計が表示されるようになっています。 ということは、51行目には数式がはいっているんですね? だから52行目から張り付いてしまうんです。 Sheets("Sheet1").Cells(51, "B").End(xlUp).Offset(1).PasteSpecial xlPasteValues なら大丈夫なはずですよ。

fightman11
質問者

お礼

回答ありがとうございました。 意図していた通りの動作が出来ました。 感謝致します。

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

こんな感じで >Sheets("Sheet1").Cells(Rows.Count, "B").End(xlUp).Offset(1).PasteSpecial xlPasteValues を Sheets("Sheet1").Cells(1, "B").End(xlDown).Offset(1).PasteSpecial xlPasteValues へ変更 以上、参考まで

fightman11
質問者

お礼

回答ありがとうございました。 教えて頂いた関数ではうまく出来ませんでした。

関連するQ&A

  • VBA空白を除いてコピーが出来ません。ご指導お願いします。

    値のコピー&ペースト(空白を除いてコピー)したいと思っております。 シート1 の A35、D35、I35 をコピー。 シート2 の A2 に貼り付け。 これは、大丈夫です。 シート1 の M2 : O23 をコピー。 シート2 の E2 に貼り付け。 今回の場合ですと、M2 : O13 までに値が入ってます。 ですので、M14 : O23 までが、空白になって記入となってしまいます。 *毎回、値が入る量が違います。 一回のコピーですと、これでもいいのですが、 値を変更して、コピーを続けてしますので、M14 : O23 までが、空白になってM24からのコピーになってしまいます。 空白を除いて、貼り付けしたいのですが、 どうすればいいのかわかりません。 お分かりになる方、ご指導よろしくお願いします。 VBAは以下になっております。 Sub Macro1() ' Application.ScreenUpdating = False Sheets("Sheet1").Range("A35,D35,I35").Copy If Sheets("Sheet2").Range("A2").Value = "" Then Sheets("Sheet2").Range("A2").PasteSpecial Paste:=xlPasteValues Else Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues End If Sheets("Sheet1").Range("M2:O23").Copy If Sheets("Sheet2").Range("E2").Value = "" Then Sheets("Sheet2").Range("E2").PasteSpecial Paste:=xlPasteValues Else Sheets("Sheet2").Range("E" & Rows.Count).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues End If Application.CutCopyMode = False Application.ScreenUpdating = True End Sub よろしくお願いします。

  • エクセル2000でマクロを作成するのに困っています。

    エクセル2000でマクロを作成するのに困っています。 ↓やりたいこと (1)データを一行コピーする (2)別のファイルを開いて、データを値貼り付けする。  ※値を貼り付けるのは、空白のセルに。 (同じように下の列に値貼りつけを順次行い、データを作成する) ----------------------------------------------------------------------------------------- Sub Macro1() ' ' Aファイルの1行をBファイルのA列が空欄の行へ貼りつけ' 'シートの選択' Worksheets("Sheet3").Activate '行を選択コピー' Sheets("Sheet3").Rows("2:2").Select Selection.Copy 'ファイルを開く' Workbooks.Open Filename:="C:\Documents and Settings\hiro\デスクトップ\Book2.xls" 'ファイル選択' Windows("Book2.xls").Activate 'シートを選択しA列が空欄のセルに貼りつけ' Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial xlPasteValues Application.CutCopyMode = False 'ファイルオープン時のシートを選択' Worksheets("Sheet1").Activate 'ファイルを閉じる' ActiveWorkbook.Close SaveChanges:=True '元ファイルに戻る' Windows("100520_一覧.xls").Activate End Sub -------------------------------------------------------------------------------------------- 2003ではうまくいきますが、会社のPCが2000のためか、下記文言でエラーがでます。 'シートを選択しA列が空欄のセルに貼りつけ' Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial xlPasteValues Application.CutCopyMode = False ●エラー表示   438 プロパティまたはメソッドをサポートしてません。 どのように入力すればよいでしょうか。 マクロを今まで一度も作ったことがわからないので、本当にわかりません。 よろしくお願いいたします。

  • シート1のC列の最終行をコピーして同じ行に値貼り付けしたい

    シート1のC列の最終行を取得して その行を丸々値貼り付けするマクロを作りたいと思います。 シート3のB18の値をシート1のC列の最終行の1つ下のセルに値貼り付け すると、その行のA、B列に日付が入力される関数が入っています。(下まで) 関数が入ったままだと、うまくいかない時があるので最終行をコピーして値貼り付けしたいのですが、マクロの作り方を教えてください。 シート1の最終行に貼り付け Sheets("Sheet3").Select Range("B18").Select Selection.Copy Sheets("Sheet1").Select Range("C65536").End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub 最終行をコピーして値貼り付け Dim 最終行 As Integer 最終行 = Range("C65536").End(xlUp).Row Range("A6:C" & 最終行).Select Selection.Copy Sheets("Sheet1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub このマクロだと、A6からC列の最終行まで全てコピーされてしまうので、C列の最終行のAからC列まで1行だけコピーできないでしょうか?

  • エクセルVBAで空白セルを削除する方法

    みなさん教えてください。 今エクセルVBAで、下記のようにのA列に空白セルがある場合にそのセルを削除し、 空白セルが無い場合何もしないと言うマクロを作っています(下記のように自動記録し ました)。 しかし、作成したマクロは、下記のようにA列に空白セルがない場合はエラーが出てし まいます。 空白セルが無い場合エラーが出ない方法を教えて頂けないでしょうか。 よろしくお願いします。 <マクロ> Sub Macro1() Columns("A:A").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.SpecialCells(xlCellTypeBlanks).Select Application.CutCopyMode = False Selection.Delete Shift:=xlUp End Sub <データ> A --------- 1 2 1 1 1 3 4 ・ ・ ・ (以降約300行続きます)

  • Excel VBAを使った重複行の抜き出しについて教えてください

    以下のような2シートから、重複する「商品番号」のあるsheet1の行を抜き出して、別シートに書き出したいと思っております。 sheet1  |  A   |  B   | C -+--------+-------+----- 1|      |      | -+--------+------+-------- 2|商品番号|商品名|責任者 -+--------+------+-------- 3|  123456|  ガム|山田太郎 -+--------+------+-------- 4| 2345678| チョコ|田中花子 ・・・ sheet2  |  A   |  B   | C -+--------+-------+----- 1|      |     | -+--------+------+-------- 2|商品番号|商品名|責任者 -+--------+------+-------- 3| 3987624|     | -+--------+------+-------- 4| 193678|      | ・・・ そこでVBAを作成したのですが、例えば商品番号「222011001」の行を抜き出したいのに、「22011001」の行も一緒に抜き出してしまいます。 どこがいけないのか、教えて頂けないでしょうか。 作成したVBAは以下の通りです。 VBA初心者で本を見ながら作ったため、大変見にくくなっているかと思います。申し訳ありませんが、どなたかおわかりになる方がいらっしゃいましたら、どうぞ宜しくお願い致します。 Option Base 1 Option Explicit Sub 重複データ抽出書き直し() Dim シート(2) As Worksheet Dim 比較列(2) As Integer Dim 一致セル As Range Dim 検索範囲 As Range Dim i As Integer Set シート(1) = Sheets("sheet1") Set シート(2) = Sheets("sheet2") 比較列(1) = 1: 比較列(2) = 1 シート(2).Activate ActiveCell.CurrentRegion.Select Selection.Offset(1, 比較列(2) - 1) _ .Resize(Selection.Rows.Count - 1, 1) _ .Select Set 検索範囲 = Selection Sheets.Add After:=Sheets(Sheets.Count) シート(1).Activate ActiveCell.CurrentRegion.Select Selection.Resize(1).Copy With Sheets(Sheets.Count).Range("A1") If Application.Version >= 9 Then .PasteSpecial 8 End If .PasteSpecial End With For i = 2 To Selection.Rows.Count Set 一致セル = 検索範囲.Find(Selection.Cells(i, 比較列(1)).Value) If Not 一致セル Is Nothing Then Selection.Offset(i - 1).Resize(1) _ .Copy Sheets(Sheets.Count) _ .Range("A65536").End(xlUp) _ .Offset(1) End If Next i Sheets(Sheets.Count).Activate End Sub

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • エクセルでK列の最終行のセル値を指定のセルに・・・

    いつもお世話になっております。 5月に下記のコードを教えてもらい、簡単な改良や条件を追加しながら複数のシートに展開中なのですが新しいパターンが出たのでHELPです。 K列の最終行の値を同じ表のH6のセルに転記してそれを使って出た計算結果(セルH7)の値をH列の最終行のセルに転記したいのですが。 (具体的な列とセルはシートで変わる可能性があります) 下記のコードは別のシート(計算表)の特定(結果)のセルの値を指定した列に転記するコードでこれで何とかしようとしましたが歯が立たず。 なにとぞよろしくお願いいたします。 Option Explicit Sub Sample3()   Dim MyRange As Range  With ThisWorkbook   Set MyRange = _    .Sheets("入力表").Cells(Rows.Count, 5).End(xlUp)   MyRange.Offset(1, 0).Value = .Sheets("計算表").Range("J15").Value   MyRange.Offset(1, 1).Value = .Sheets("計算表").Range("J20").Value  End With End Sub

  • VBA:Offsetから値が貼付けれない

    はじめまして。 VBAを利用してマクロを作っているのですが、 Range("a6:l6").Copy Worksheets("結果シート").Range("A65536").End(xlUp).Offset(1) というのは動くのですが、結果シートへの貼付けを「値」で行いたいと思い、 以下の通りValueを指定しても動きません。 Range("a6:l6").Copy Worksheets("結果シート") .Range("A65536").End(xlUp).Offset(1).value PasteSpecialを使うと良いのかと思い、 Range("a6:l6").Copy Worksheets("結果シート") .Range("A65536").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues としてもエラーが出ます。 数式の結果を取得して、別のシートの空白セルを探し、「値」として張付ける。 というのがしたいのですが、なにか上手い方法があれば、ご教授お願いします。

  • 複数ファイルの特定のセルをコピーして1つにまとめる

    1つのフォルダ内の複数のファイル(Sheet1のみ)から、 特定のセルをコピーして、1つのファイルにまとめたいと 思っています。 変数  wkb 複数のファイル  myb 自分のファイル (1) wkb.Sheets("Sheet1").Range("A1:D5").Copy myb.Sheets("統合").Cells(i, "A").PasteSpecial Paste:=xlPasteValues このように書いた場合、うまくいくのですが (2) wkb.Sheets("Sheet1").Range(Cells(1, 1), Cells(5, 5)).Copy myb.Sheets("統合").Cells(i, "A").PasteSpecial Paste:=xlPasteValues このように書くと、1004でエラーとなります。 本来は、Sheet1の1行目から5行目までの中で、値がある行まで コピーしたいので、(つまり1~3行目のときもあれば、1行目だけの ときもある。)(2)の方法で実行したいのです。 なんとかいい方法はないでしょうか?

  • マクロで「もし空白なら」と条件をつけたいんです

    Excel2000を使っている、マクロ初心者です。 質問の仕方もいまいちわかっておらず、わかりづらくてすみません。 仕事で注文管理表を作って、自分のやりたい作業ができる関数を探していたところ、マクロを使ってやるのがよいとわかったので、「自動記録」をつかって作ってみました。 注文一覧表は行ごとに商品名、列ごとにA店、B店・・・と店舗名が入っています。 そして記録されたマクロは下記です。 Sub 一覧表() ' ' 一覧表 Macro ' マクロ記録日 : 2008/5/16 ユーザー名 : -ameji- ' ' Selection.AutoFilter Field:=5, Criteria1:="<>" Range("B2:D100").Select Selection.Copy Sheets("A店").Select Range("B3").Select Selection.PasteSpecial Paste:=xlPasteValues Range("B3").Select Sheets("注文一覧表").Select Range("F2:F100").Select Application.CutCopyMode = False Selection.Copy Sheets("A店").Select Range("F3").Select Selection.PasteSpecial Paste:=xlPasteValues Range("B3").Select End Sub このような感じで、「注文一覧表のあるシートで空白のセルを省き、各店舗用のシートの表に転記し、A店のシートのB3をアクティブにして終わり」といった流れを作りました。 これは1店舗分ですが、End Subの前に10店舗分、同じ物があります。 すべての店舗が1つ以上の商品を注文した場合はうまく作動するのですが、何も注文しなかった店舗があると、エラーになってしまいます。 そこで、指定した範囲(A店なら、注文一覧表のF2:F100)が「すべて空白なら」それに対応する店舗のシートのB3をアクティブにするだけ、「1つでも数字が入っているなら」上記のマクロを実行するようにしたいのです。 If~thenが目的にあっていそうだったので試してみましたが、条件の入れ方が間違っていたらしく、うまく出来ませんでした。 そこで皆様のお知恵をお借りしたいと思います。 よろしくお願いいたします。

専門家に質問してみよう