- ベストアンサー
可視セルから可視セルへのコピー
エクセルのデータ集計で集計された数字(可視セル)を他のファイルの表にコピーしたいのです。 通常、編集→ジャンプから可視セルを選びコピー→形式を選択して貼り付けから値を選び 貼り付けているのですが、今回は表の方にも非表示にしている行があるのです。 なので通常の方法でやると表の方の非表示セルに値が貼りついてしまい困ってます。 可視セルの値を表の可視セルへコピーする方法はないのでしょうか?
- bonbonkogepan
- お礼率97% (203/208)
- オフィス系ソフト
- 回答数4
- ありがとう数10
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2 のpascal3141さんへ >ActiveSheet.Paste 貼り付け側にも、非表示セルがあるのですね。だから、そのまま貼り付けは出来ませんね。 bonbonkogepan さん、こんばんは。 やっと、形がまとまりました。 [Alt]を押しながら[F11] を押して、Visual Basic 画面を開けたら、挿入-標準モジュールで、画面を出します。そして、以下を貼り付けます。 一旦、保存してから、再び、このブックを起動したら、マクロが設定されます。 使い方: コピーする可視セルの範囲をマウスで選択して、 「Ctrl + C(Ctrlキーを押しながら、C」とすると、 メッセージが出てきます。 (メッセージは、不要になったら、MsgBox の代わりに、Beep という単語だけを書くと、音だけします。) 次に、コピーされる側のセルに移り、「Ctrl + V」とします。 ショートカットは、自分で変えられます。 + がShift, ^ がCtrl, % がAlt です。 ファンクションキーは、{F1}, {F2}…… となります。 取り外し側で、同じよう書けば残りません。また、Excel自体を終了しても残りません。もし、[Personal.xls] に同じように書けば、全体のブックに設定されます。 ※現在のバージョンは、非表示行に対してのみです。 なお、作った本人は、今のコードを気に入っています。このご質問はとてもユニークです。ですから、もっと別な人のアイデアを見たいものです。また、作っている途中で、セルの自体のコピー(書式等を含めて)の仕方も思いつきました。それから、これは、Excelの持っているクリップボードを使えば、もっと完璧になりますが、掲示板の性格上、そこまではしませんでした。 '--------- 切り取り線 ----------------------- '<標準モジュール登録> Option Explicit Private rng As Range Private copyFlg As Boolean Sub Auto_Open() Call SettingKey End Sub Sub Auto_Close() Call SettingOffKey End Sub Sub SettingKey() '設定ショートカット With Application .OnKey "%c", "VisibleCopy" 'コピー Alt+ C .OnKey "%C", "VisibleCopy" .OnKey "^v", "VisiblePaste" '貼り付け Ctrl+ V .OnKey "^V", "VisiblePaste" End With End Sub Sub SettingOffKey() '設定ショートカットの取り外し With Application .OnKey "%c" .OnKey "%C" .OnKey "^v" .OnKey "^V" End With End Sub '---実行部分------- Sub VisibleCopy() Set rng = Selection.SpecialCells(xlCellTypeVisible) copyFlg = True MsgBox "Ctrl +V で貼り付けしてください", 64 '覚えたら、外してネ! 'Beep End Sub Sub VisiblePaste() Dim c As Range, cnum As Long Dim myArray() As Variant Dim i As Long, j As Long If copyFlg = False And rng Is Nothing Then Exit Sub cnum = rng.Areas(1).Columns.Count For Each c In rng ReDim Preserve myArray(i) '配列に格納 myArray(i) = c.Value i = i + 1 Next c With ActiveCell j = 0 For i = LBound(myArray) To UBound(myArray) Do While .Offset(j, j).EntireRow.Hidden = True j = j + 1 Loop .Offset(j, (i + cnum) Mod cnum).Value = myArray(i) If (i + cnum) Mod cnum = cnum - 1 Then j = j + 1 Next i End With End Sub
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
#3の修正分: ショートカットキーは、バッティングすると前のものが無効になってしまいます。Ctrl + V とは共用すべきではありませんでした。Alt + X は、ちょっと近すぎるような気がします。ショートカットキーの空いたところを探して、設定してもよいです。 Option Explicit Private rng As Range Private copyFlg As Boolean Sub Auto_Open() Call SettingKey End Sub Sub Auto_Close() Call SettingOffKey End Sub Sub SettingKey() '設定ショートカット With Application .OnKey "%c", "VisibleCopy" 'コピー Alt+ C .OnKey "%C", "VisibleCopy" .OnKey "%x", "VisiblePaste" '貼り付け Alt+ X .OnKey "%X", "VisiblePaste" End With End Sub Sub SettingOffKey() '設定ショートカットの取り外し With Application .OnKey "%c" .OnKey "%C" .OnKey "%x" .OnKey "%X" End With End Sub Sub VisibleCopy() Set rng = Selection.SpecialCells(xlCellTypeVisible) copyFlg = True MsgBox "Alt +X で貼り付けしてください", 64 '覚えたら、外してネ! End Sub Sub VisiblePaste() Dim c As Range, cnum As Long Dim myArray() As Variant Dim i As Long, j As Long If copyFlg = False And not rng Is Nothing Then rng.Paste ActiveCell Exit Sub End If cnum = rng.Areas(1).Columns.Count For Each c In rng ReDim Preserve myArray(i) '配列に格納 myArray(i) = c.Value i = i + 1 Next c With ActiveCell j = 0 For i = LBound(myArray) To UBound(myArray) Do While .Offset(j, j).EntireRow.Hidden = True j = j + 1 Loop .Offset(j, (i + cnum) Mod cnum).Value = myArray(i) If (i + cnum) Mod cnum = cnum - 1 Then j = j + 1 Next i End With End Sub
お礼
夜遅くまでありがとうございました。 こちらのコードを採用させていただきました。
- pascal3141
- ベストアンサー率36% (99/269)
この方法ではいけませんか? 今みている可視セルを、Sheet2にコピーするマクロです。標準モジュールに書いてください。 Sub CopyVisual() 'アクティブセル選択 Range("A1").CurrentRegion.Select '可視セルコピー Selection.SpecialCells(xlCellTypeVisible).Copy '別シートにはりつけ Worksheets("Sheet2").Select ActiveSheet.Paste Application.CutCopyMode = False End Sub
- Wendy02
- ベストアンサー率57% (3570/6232)
ご質問としては面白いのですが、実際、朝から考えて、良い案が出てきません。 残念ながら、VBAでしか処理することは不可能だと思います。 コピーという範疇ですが、書式などを含めてコピーなのですか? それとも、値だけで良いのでしょうか? それによって、コードが変ってきます。 と、言って、できるかどうか、まだ分かりません。
補足
Wendy02様、毎度お世話になります。 朝から考えていてくださってたとは! 頭が上がりませんm(__)m 可視セルから可視セルへのコピー… ありがちだと思うんですけどねぇ。 普通にするぶんには無理なんですね。 補足ですが、コピーは値のみになります。 もし出来たらでいいんでお願いします。 いつまでもお待ちしております。
関連するQ&A
- 可視セルのみのコピー
あるエクセルシートのデータで、非表示の行または列があって、それを別のシートにコピーするとき、データは可視セルのみをコピーしつつも(非表示の行・列を自動削除)、書式・列幅だけは元データを生かし貼り付けということを簡単に行う方法はあるでしょうか。「編集ージャンプ」で可視セルのみ選択しコピーまではうまくいったのですが、貼り付けのとき、値貼り付けまたは行・列どちらかの貼り付けしかできず、書式・列幅は再度貼り付けるという2度手間になってしまいます。一度にできるよい方法があったら教えて下さい。
- 締切済み
- オフィス系ソフト
- 可視セルから可視セルへのコピー&ペーストについて
こんばんは、教えてください!! 可視セル(表)から可視セル(表)へのコピーはどうすれば可能でしょうか。 今1つのブックに表があって4人で表を埋めていく作業をしています。 表にフィルターをかけてそれぞれ担当の項目をフィルターで表示させ表を完成させていく作業をしています。また1つのファイルを共有にしていなく、それぞれコピーをしているので最終的に4つのファイル(同じファイルで各担当の項目のみ埋まっているもの)が集まりそれらを1つにまとめなければなりません。 今、まとめている作業をしているのですが、まとめる表も担当の表もどちらもフィルターをかけた状態にしてコピー・ペーストをしようとしています。 そうすると例えばフィルターを使ってAさんのファイルを抽出し、まとめる表にコピーをしようと可視セルの選択をしてコピーを使ってみたのですが、貼り付け たものは表示されていない行にも貼り付けされます。 可視セルのみを可視セルにペーストするにはどうすればいいのでしょうか。 かなり長い文章になりました、すみませんが助けてください!!!!
- ベストアンサー
- Windows XP
- エクセルの可視セルのみをコピーする
宜しくお願いします。 エクセルの可視セルのみをコピーしたいのですが、うまくいきません。 幾つか列をランダムに飛ばして(隠して)作成してある表があります。 この隠したところをカットして新規ページにコピーしたいのですが、できません。可視セルのみを選択するところまではいけるのです。 (編集⇒ジャンプ・・・)しかし、これをコピーして貼り付けようとしてもできないのです。 どなたか、方法を教えてもらえませんか。 宜しくお願いします!
- ベストアンサー
- オフィス系ソフト
- G→可視セル→コピー貼り付けがうまくいかない
お世話になります。 エクセル2007でよく使う「可視セルのみコピーし貼り付け」がうまくいきません。 既存ブックの印刷したい行以外は非表示にし、 印刷したい範囲を選択してから 「ジャンプ→可視セル選択→コピー」し、 別のブックを開きひとつだけセルを選択し「貼り付け」すると、 非表示行まですっかり貼り付いてしまいます。 「形式を選択して貼り付け」にすると、 「ワークシートオブジェクト」とか「図」とか 「ビットマップ」とか書いてある見覚えのないウィンドウが開きます。わからないまま「ワークシートオブジェクト」でOKすると 「貼り付けられませんでした」と言われます。 目的は、不要なところを除き必要なところだけ 紙をケチって詰め詰めで印刷したい、ということです。 どなたかご指導お願いします。
- ベストアンサー
- オフィス系ソフト
- 可視化セルのコピーと貼り付けについて
可視化セルのコピーって出来ますよね。 フィルターを掛けて見えているセルをコピーし(可視化セルのコピー)、同じくフィルターを掛けて見えているセルに貼り付けたいのですがどうすればよいのでしょうか? 可視化セルへの貼り付けということは出来ないのでしょうか?
- 締切済み
- オフィス系ソフト
- エクセル vlook関数、可視セルのコピーについて
大量のデータを編集している仕事をしており、 教えて頂けないでしょうか。 ・可視セルから可視セルへのコピー ・vlookの結果を、関数式が入っていない状態で表示したい(TEXT関数ではなく) 説明が下手かもしれませんが申し訳ありません。 ある大量データのエクセルシートが二つあります。 それを合わせて、vlookで結果を出します。 結果を出したいシートの列には、予めいくつか入力されている消せないセルがあります。 この消せないセルは、vlookの結果を出すセルではありません。 ソートをかけて、vlookの貼り付け先であるセルを出します。 結果が反映されます。 この場合、結果先のセルにはvlookの関数式が入ったデータが入ります。 この結果を関数式が入っていない数値や文字にしたいのです。 私のやり方は、結果先の列の横に新たに列を挿入し そこにvlookの結果を出し、それをコピー、反映させたい列へ形式を選択して値を貼り付けています。 しかし一度に選択してコピーしようとしても、ソートがかかっており 可視セル状態にしても、うまく貼り付けができません。 なので、一つ一つのセルをコピーして値にし、横のセルに貼り付けています。 上記のどちらか一つがわかれば、できると思うのですが 何か良いやり方はないでしょうか。 あまり詳しくなく、教えてもらえればと思います。
- 締切済み
- Windows 7
- EXCELで可視セルのコピー貼り付け
記憶があいまいになったので教えてください。 EXCELで単純にコピー貼り付けでは正しい処理がされず、 編集メニューのジャンプー可視セルをコピー貼り付けで正しい処理が されるのは、どういう場合だったでしょうか。
- ベストアンサー
- オフィス系ソフト
- 【Excel】 可視セルへの貼り付けについて
【Excel】 可視セルへの貼り付けについて Excel2003および2007を使用しています。 ピボットにて集計したデータを別データに貼り付けしたいのですが、 その別データをフィルタで絞って、可視セルのみに貼り付けしたいのですが、 うまくいきません。 非表示のセルにも貼り付けされてしまいます。 可視セルのみに貼り付けできる何かいい方法はありますでしょうか? ちなみに貼り付け方法は 値のみ を希望です。 (例) ◎ ピボットデータ・・・ A B A B A B ◎ 貼り付け先データ・・・ A B C A B C A B C ・・・ABのみフィルタで絞って、ピボットデータを貼り付けしたい。 Cは非表示なので貼り付けしたくない。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- マクロで可視セルのみの削除
A行に数字を入れ、B行にA行同列セルの数字に対して 数値を返す数式を入れています。 B行は非表示にしています。 (C・D行、E・F行・・・とも同じ処理) 数字を入力する範囲(A、C、E・・・)を選択し、 入力されている数字を消去するようマクロを組みました。 (範囲選択→ツールの編集→ジャンプ→可視セルを選択後、Delete) これはうまく作動します。 が、数式が壊れるのを防ぐ為、念には念を・・・と、 入力範囲部分はセルの書式設定で保護ロックを外し、 シートを保護しました。 そうすると、保護されているからだめ!と エラーが出て、マクロが作動しません。 (可視セル選択部分にデバッグがでます。) ・非表示のセルがある ・一部を除きシートを保護している 状態で、マクロで可視セルのみ削除することは不可能なんでしょうか? 宜しくお願いします。
- ベストアンサー
- Windows NT・2000
- エクセル セルのコピーができない。
エクセルでセルをコピー&貼付けがうまくできなくなりました。 セルをコピーしてもテキストしか認識されずに、貼り付けるとセルの書式設定等は全くついてきません。 また、行や列毎コピーして挿入することもできなくなりました。 形式を選択して貼り付けを選択すると、Unicodeテキストかテキストの2つから選ぶ画面しか出てこず、 通常の値、数式、書式設定等を選ぶ画面も出てきません。 とくに何かエクセルの設定を変えた覚えはないので、なぜこうなったのかわかりません。 どうしたら、通常のセルのコピーができるようになりますでしょうか。
- ベストアンサー
- その他MS Office製品
お礼
朝から会社で上記をコピーしてやってみました。 VBAは全くわかりませんので何度かエラーが出てどうしよー!?っと焦ってたのですが、 ようやく成功しました!! 完璧です!!! これで貼り付ける方の表の非表示部分に合わせてこま切れにコピーせずにすみます。 私がこの仕事をしている限りずっとこのコードを使い続けます。 良回答20点なんて足りませんね。 ホント何百点、何千点と付けたい気持ちです。 本当にありがとうございました! ちなみにWendy02様は >ですから、もっと別な人のアイデアを見たいものです。 とのご意向ですのでこの質問はしばらく締め切らずに置いておきます。