ウォーターサーバーとコーヒーマシンが一体化した画期的マシン >>

質問番号: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で質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qフィルタしたセルのコピーをフィルタしたセルに貼り付けたい

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

上手い方法がありますでしょうか?

Aベストアンサー

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

これでできませんかね…ご要望と違う内容でしたらすみません。

Q【Excel】 可視セルへの貼り付けについて

【Excel】 可視セルへの貼り付けについて

Excel2003および2007を使用しています。
ピボットにて集計したデータを別データに貼り付けしたいのですが、
その別データをフィルタで絞って、可視セルのみに貼り付けしたいのですが、
うまくいきません。
非表示のセルにも貼り付けされてしまいます。
可視セルのみに貼り付けできる何かいい方法はありますでしょうか?

ちなみに貼り付け方法は 値のみ を希望です。


(例)
◎ ピボットデータ・・・ 









◎ 貼り付け先データ・・・











・・・ABのみフィルタで絞って、ピボットデータを貼り付けしたい。
Cは非表示なので貼り付けしたくない。

よろしくお願いします。

Aベストアンサー

フィルタモードのシートに、他のシートのデータ範囲をコピー貼り付けすると、非表示行にもデータが貼り付けられますので、基本的にこの方法ではセル範囲をコピー貼り付けすることはできません。

多くの場合は、フィルタされたデータにすべて同じデータを貼り付けますが、この場合なら、1つのセルに入力したデータをオートフィルドラッグすることで対応できます。

各セルに異なる値を貼り付けたい場合は、フィルタではなく並べ替えを利用することになります。

すなわち、フィルタと同じ条件で優先順位を付けてデータを並べ替え操作をすると、コピー貼り付け対象のデータが一塊になりますので、この範囲にコピー貼り付けをします。

データの並び順を元に戻したいなら、補助列(必要に応じて非表示にしておく)に連番を入力しておき、最後にこの補助列で昇順に並べ替えを行います。

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

QエクセルVBAでフィルタ抽出部分のみのコピー

エクセルVBAで売上帳を作成していますが、オートフィルタでデータ抽出した後、表示されている行のみをコピーして別シートに貼りつけるにはどうすればよいのでしょう?

別シートは指定したセルに値のみの貼り付けをしたいと思っています。

宜しくお願いします。

Aベストアンサー

こんにちは
マクロの記録で作成した一例です。コメントを読んで、適当にアレンジして下さい。

Option Explicit
Sub SampleMacro1()
'
' SampleMacro1 Macro
' マクロ記録日 : 2009/3/13
'
 'フィルター部分
 Selection.AutoFilter Field:=1, Criteria1:="=ほげほげ", Operator:=xlAnd
 '可視セルの選択
 Selection.SpecialCells(xlCellTypeVisible).Select
 '選択範囲のコピー
 Selection.Copy
 'コピー先のシート&セル選択
 Sheets("Sheet2").Select
 Range("A1").Select
 'ペースト
 ActiveSheet.Paste
 'コピー元シートに戻りコピー状態解除
 Sheets("Sheet1").Select
 Application.CutCopyMode = False
 Range("A1").Select
End Sub

外してたら、ごめんなさい

こんにちは
マクロの記録で作成した一例です。コメントを読んで、適当にアレンジして下さい。

Option Explicit
Sub SampleMacro1()
'
' SampleMacro1 Macro
' マクロ記録日 : 2009/3/13
'
 'フィルター部分
 Selection.AutoFilter Field:=1, Criteria1:="=ほげほげ", Operator:=xlAnd
 '可視セルの選択
 Selection.SpecialCells(xlCellTypeVisible).Select
 '選択範囲のコピー
 Selection.Copy
 'コピー先のシート&セル選択
 Sheets("Sheet2").Select
 Range("A1").Select
 'ペース...続きを読む

Qエクセルでフィルタして縦にセルコピーをすると隠れた行にもコピーされてしまいます。

EXCEL2007を使っています。フィルタで行の表示を絞った状態で選択セルの右下をドラッグして縦に内容をコピーすると、フィルタされた行にもコピーされてしまいます。フィルタされた行は含めずにコピーするにはどうしたらよいですか?

Aベストアンサー

1) コピーしたいセル範囲を選択して、「Ctrl+G」または「ホーム」タブ→「編集」グループの「検索と選択」をクリックして「ジャンプ」を選択します。

2) 「ジャンプ」の左下の「セルの選択」ボタンを押して、表示されるダイアログで、「可視セル」のラジオボタンをオンにして「OK」で、選択範囲にある見えている(可視)セルだけが選択されます。

3) 「Ctrl+C」などで「コピー」し、ご希望のセルを指定して、「貼り付け」します。

なお、セルの幅もコピーしたいときは、3)の「コピー」操作の後、「ホーム」タブの「貼り付け」の▼を押して、「形式を選択して張り付け」を選択し、「列幅」をオンにして「OK」を押すと、列幅がコピーされますので、「貼り付け」します。

「可視セルのみをコピーする」
http://office.microsoft.com/ja-jp/excel/HA102448971041.aspx

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

Qエクセルのオートフィルタで、あるデータにオートフィルタをかけたあとに他

エクセルのオートフィルタで、あるデータにオートフィルタをかけたあとに他のエクセルデータから
データを貼り付けようとするとうまくいきません。

たとえば、オートフィルタをして30行あったものが10行に選択されたとき、その10行に他のエクセルデータから10行のデータを貼り付けたら4行くらいしか貼り付け出来ませんでした。

これはどうしてですか?わかる方がいれば教えてください。

Aベストアンサー

オートフィルタで隠れている行にも,「潜り込んで」貼り付いているからです。
10行のデータを貼り付けたら,見え隠れしている上から10行分にしか入りません。オートフィルタを解除してみると,一目で分かります。

逆に10行コピーしてきた時に,「見えている行10行」だけに,選択的に貼り付ける方法はありません。
やり方としては並べ替えなどを上手に使い,「見えている行」を上下にくっつけた「連続した10行」にすれば,そこにそのまま貼り付けることが出来るようになります。

#例えばオートフィルタで絞った行に数字の1などをまとめて放り込んでやり,オートフィルタを解除して並べ替えてみると上手い具合に「連続」させられます。元のデータに上から下まで通して連番を入れておけば,貼り付け後に連番で並べ替えて容易に元に戻せます。

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング