プロが教える店舗&オフィスのセキュリティ対策術

質問番号:2467654で似たようなことを希望した方がいて、

【フィルタしたセルをコピーし、別シートのフィルタしたセルに貼り付けたいのですが、
別シートに貼り付けた時見えなくなっているセルにもコピーデータが張り付いてしまいます。】


という質問に対してベストアンサーが

【Ctrlキーを使用すれば、できますよ。
(例)
Aシートのコピーしたい部分を選択し、Ctrl+右クリックショートカットからコピーをクリックします。
Bシートの貼り付けたい部分にカーソルを持っていき、Ctrl+貼付…】

となっていて「できました」!といわれているのですができません。
これ本当にできますか?

違う部分も取り込んでしまうのですが…
フィルタをかけているのが他の列だとできないのでしょうか。

(例)
A B C ←列
あ 1 イ
い 2 ロ
う 3 ハ
え 4 ニ
お 5 ホ

の場合に、フィルタで あ うの行を選んで 1 3 を D列にペーストし、
あ1イ1 や う3ハ3 をつくりたい場合に あ1イ1は良いですが、い2ロ3 ができてしまうのです。



ちなみに以下のような回答もありましたが、これも「フィルタしたセルに貼り付け」はできませんでした。。
バージョンはエクセル2003です。

可視セルを選択してから、「コピー」→「貼り付け」を行うと、可視セルだけが貼り付けされます。

以下は、その手順です。
1) コピーするセル範囲を選択します。
2) 「編集」→「ジャンプ」→「セル選択」をクリックします。
3) 表示される画面で、「可視セル」にチェックを入れ「OK」を押します。可視セルだけが選択されます。
4) その後、コピーから貼り付けで、可視セルだけが貼り付けされます。
http://office.microsoft.com/ja-jp/assistance/HP0 …

セルの選択コマンドから操作する方法もあります。
http://www.h3.dion.ne.jp/~fukusima/waza/ura124.h …

参考URL:http://office.microsoft.com/ja-jp/assistance/HP052014731041.aspx,http://www.h3.dion.ne.jp/~fukusima/waza/ura124.h …

A 回答 (4件)

フィルタしたセルのコピー貼り付けに関しては、リンクで紹介されているものを含めて不正確な情報が多いように思います。



基本的に、フィルタしたデータは、非表示にしたデータと異なり、選択範囲の行のみクリップボードにコピーされます(すなわち、Ctrlキーを押しながら、縦にとびとびにセルを選択した状態と同じわけです)。

一般に、とびとびの行を選択してコピーしたセルを貼り付けると、行が詰められて貼り付けられます。
したがって、フィルタモードの場合はジャンプダイアログから可視セルを選択しないでも(まったくこの操作の必要はありません)、無条件に可視セルが貼り付けられます。

一方、フィルタモードではなく、行を非表示にしたシートでは、セル範囲を選択すると、可視セル以外のセルも選択されるので、可視セルだけを貼り付けたい場合は、ジャンプから可視セルを選択する必要があるわけです。

これらのクリップボードのデータをフィルタしたシートに貼り付けるときは、とびとびではなく一塊のデータとして貼り付けられるので、モードにかかわらず、必ず非表示セルにも貼り付けられます(すなわち、とびとびのセルに貼り付ける方法はありません)。

一方、フィルタモードでオートフィル操作を行うと通常とは異なり、連続データは入力できず(コピーのみ)、さらに表示セルだけを対象とします。

これを利用すれば、フィルタした行だけに同じ値を入力することができます。

例えば、フィルタした状態であるセルにデータを入力し、下方向にオートフィルすれば、その値が表示セルだけに「コピー」されます(非表示行にはデータが入力されません)。

例示のデータのように、フィルタしたB列のデータをD列に入力したい場合は、C列を非表示にしてから(列が飛んでいるとオートフィルができないため)、B列のフィルタされたセルを選択して、右方向にオートフィルしてください。

これでC列を再表示して、フィルタモードを解除すればフィルタされたデータだけにデータをコピーすることができます(オートフィル操作ができない別シートには適用できません)。
    • good
    • 10
この回答へのお礼

丁寧なご説明をありがとうございました。

正直、なかなかすぐには理解できず、また他作業に追われ、
お返事が遅くなってしまいました。申し訳ありません。

作業上、ひとつひとつペーストするのとどちらが大変か…と
迷いましたが、結局、何か違うと怖いので
今回はひとつひとつペーストする形式をとりました。

しかし、方法がないわけではないとわかったので大変ありがたく思います。
今度機会があれば、やってみたいと思います。

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

お礼日時:2011/12/15 10:25

No.2です!


たびたびごめんなさい。

前回のコードで抜けている行がありました。
もう一度コードを載せておきます。

Sub test() 'この行から
Dim i As Long
Dim str As String
str = InputBox("検索したいデータを入力してください。")
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row '※注
If Cells(i, 1) = str Then
Cells(i, 4) = Cells(i, 2)
End If
Next i
Columns("A:D").AutoFit
End Sub 'この行まで

何度も失礼しました。m(_ _)m
    • good
    • 1
この回答へのお礼

二度もたくさんご記入いただいたのにすみません、
最初に「マクロは全く分かりません」と書くべきでした。

結局あきらめました、申し訳ありませんでした。

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

お礼日時:2011/12/15 10:00

こんばんは!


VBAでの一例です。

データは2行目からあるとしています。
画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので、
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub test() 'この行から
Dim i As Long
Dim str As String
str = InputBox("検索したいデータを入力してください。")
'※注
If Cells(i, 1) = str Then
Cells(i, 4) = Cells(i, 2)
End If
Next i
Columns("A:D").AutoFit
End Sub 'この行まで

尚、質問では複数データで検索したいようなのですが、上記のマクロは検索したいデータの数だけマクロを繰り返す必要があります。

もしデータが1行目からある場合はコード内の ※注 の行を
>For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
に変更してみてください。

以上、参考になれば良いのですが、
ご希望の方法でなければよみながしてくださいね。m(_ _)m
    • good
    • 0
この回答へのお礼

たくさんご記入いただいたのにすみません、
最初に「マクロは全く分かりません」と書くべきでした。

結局あきらめました、申し訳ありませんでした。

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

お礼日時:2011/12/15 10:00

やりたいことと、過去の質問内容とがあっていないように思えます。



過去の質問内容は、フィルタをかけた部分のみ別のシートへコピーする方法です。
なので、今回の質問では1と3だけがコピーされて問題ありません。

コピー先はそのフィールドがフィルタがかかっているかかかっていないかに関係なく
選択した行数分のみ連続ではりつけるからです。
『あ』と『う』の2行を選択したのだから『あ』と『い』の2行に貼り付けられて正常です。

やりたいことを実現するにはコピーではなく、式を挿入して、条件に一致したら文字を表示するようにすればよいと思います。

以上です。
参考になれば幸いです。
    • good
    • 0
この回答へのお礼

>やりたいことと、過去の質問内容とがあっていないように思えます。

いえ、やりたいことと、過去の質問内容とはあっていると思います。
どちらも「フィルタがかかっている状態」とのことですから。

「できました」がおかしいと思います。

その他はおっしゃるとおりです。
そこは私もわかります。

しかしその
「やりたいことを実現するにはコピーではなく、式を挿入して、条件に一致したら文字を表示する」
ための式がわかりません。

結局あきらめました。ありがとうございます。

お礼日時:2011/12/15 10:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!