• ベストアンサー

フィルタオプションの設定を使って、他のシートの情報を抽出しております。

フィルタオプションの設定を使って、他のシートの情報を抽出しております。 しかし、他のシートでハイパーリンク設定しているセルを抽出すると、 ハイパーリンクが解除されてしまっており、困っております。 フィルタオプションを使ってハイパーリンクを生かす方法があればご教示いただけると幸いです。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

> このマクロでは、めまぐるしく画面が移動するので適していないようです。 以下のコードを作成したマクロコードの最初と最後に挿入してください。 Application.ScreenUpdating = False 作成したマクロコード  Application.ScreenUpdating = True

a26vNvvub
質問者

お礼

この2行で解決なんてすばらしい。 さすがです。 大変感謝しております。 ありがとうございました。

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

マクロコードを見ましたが、データ範囲にdataという名前を定義してあることを除けば、検索条件の入力部分から開始するマクロの記録のコードだと思うのですが、最後に他シートに貼り付ける部分がないですね。 イメージとしては、新しいマクロの記録で以下のような操作をしてください。 新しいマクロの記録を開始したら、「データ」「フィルタ」「フィルタオプションの設定」でリスト範囲を自動的に取得されるよりも大きな範囲を明示的に指定します(可変範囲の名前定義でもOKです)。 固定した検索条件範囲(あらかじめ条件は入力した後でマクロを実行するのが合理的)を指定し、そのままOKします。 フィルタされたデータ範囲を下の行の空白セルを含めて大きめに選択し(たとえば1000行のデータならその倍の2000行まで)、コピーして他シートに貼り付けます。 最後に元のシートに戻って「データ」「フィルタ」「すべて表示」して記録を完了すれば、ご希望のデータが他シートに抽出されています。

a26vNvvub
質問者

お礼

ありがとうございます。 やりたいことができました。 しかしながら、フィルタオプションの設定で、他のシートに貼り付けるほうが処理速度が速く、 このマクロでは、めまぐるしく画面が移動するので適していないようです。 ああ、おしい。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

フィルタオプションの設定で抽出先を指定した場合は、抽出データは値のみの貼り付けとなりますので、数式やハイパーリンクは引き継がれません。 抽出先を指定せずフィルタオプションの設定を行い、このフィルタされたデータを他シートにコピー貼り付けされてはいかがでしょうか。 ちなみに、検索条件のセル範囲を固定しておけば、少し操作ノウハウが必要ですが、新しいマクロの記録だけで対応できますので、ボタン一発で実行することも可能です。

a26vNvvub
質問者

補足

早々のお返事ありがとうございます。 現在、マクロで他のシートに抽出しております。 直接フィルタオプションの設定では、値のみ貼り付けとなってしまうのですね。(残念) お勧めいただいた方法は、一度同じシートで抽出した後、コピペするのでしょうか。 ちなみに現在のマクロを表示します。 なにか良いアイデアがありましたらよろしくお願いします。 Private Sub CommandButton10_Click() Unload junior 'Sub 児童() Range("E3:N3").Select Selection.ClearContents Range("L3").Select ActiveCell.FormulaR1C1 = "児童" Sheets("data").Cells.AdvancedFilter Action:= _ xlFilterCopy, CriteriaRange:=Range("E2:N3"), CopyToRange:=Range("E5:N5"), _ Unique:=False Range("L6").Select End Sub