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

初めて質問させていただきます。
社内コミュニケーションの取り組みで、改善要望とそれに対する回答の一覧をエクセルで作成しました。それを全社に公開するにあたり、検索窓でフリーワードを入れて検索ができるようにしたいのですが、方法を教えていただけないでしょうか。イメージはGoogle検索のような感じです。この1週間、色々調べて試しているのですがどれもうまくいきません。そもそもスキルをもっていないので苦戦しています…。12/25に公開する予定なのでもう時間がなく、藁をもつかむ思いでこちらに質問させていただくことにしました…。
どなたかお詳しい方にご教示いただけると幸いです。どうぞよろしくお願いいたします。

詳細は以下の通りです。
①エクセルはOffice365を使用
②一覧はA~G列まで項目があり、C列の要望欄を検索対象とします
③フリーワード検索用のシートを別に作り、そちらに検索窓とC列を検索した結果を表示
④結果はA~G列まですべて表示

以上です。不足する情報があれば追加させていただきますのでご連絡ください。

質問者からの補足コメント

  • さっそくありがとうございます。
    補足事項は下記の通りです。どうぞよろしくお願いいたします。

    1.一覧の1行目は一覧名(タイトル)が入ります。2行目が見出し行、検索対象となるのはC列3行目以降です。
    2.一覧のシート名は「フリーワード検索用データ」
    です。
    3.添付図のレイアウトでOKです。①フリーワードを入力するセルの番地はC1 ②結果は3行目以降に表示。
    4.検索用シートのシート名は「フリーワード検索」です。
    5.関数を埋め込んであるセルはありません。
    6.一覧のデータは現在1400件ぐらいですが、今後2000件程度に増える見込みです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/12/24 11:20
  • コメントありがとうございます。私が使うのであればFILTER関数でもよいのですが、閲覧者がすぐに探せるようにする目的で検索窓を作りたいと考えております。うまく説明ができておらず申し訳ありません。
    また、不適切な表現があり大変失礼致しました。ご指摘を受けてその通りだと思いました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/12/24 11:35
  • さっそくありがとうございます!私にマクロのスキルが無く、設定の仕方も教えて頂けると大変助かります。お手数をおかけして大変申し訳ありません。
    可能であれば検索ボタンも作れると嬉しいのですが、ご存知でしたら教えて頂けますでしょうか。

    No.4の回答に寄せられた補足コメントです。 補足日時:2020/12/24 11:44

A 回答 (8件)

補足要求です。


1.一覧の1行目は見出し行ですか。(検索対象となるのはC列の2行目から)
2.一覧のシート名はなんですか。
3.検索用のシートのレイアウトは添付図でOKですか。
①C1に検索文字列を入力しマクロを実行
②結果は、3行目以降に表示される。
もし、他の要望があれば、補足してください。
4.検索用のシートのシート名はなんですか。
5.一覧のシートで関数を埋め込んであるセルはありますか。
6.一覧のデータはおよそ何件ですか。
「【エクセル】フリーワード検索用の検索窓を」の回答画像1
この回答への補足あり
    • good
    • 0

Office365なんだから FILTER関数で抽出すればいいでしょう。


スピルで表示されるはずです。

> 藁をもつかむ思いで
それを質問する相手にいうのは失礼だと思います。
この回答への補足あり
    • good
    • 0

> 不足する情報があれば追加させていただきますので


それぞれのシート名。元データ範囲のセル番地。フリーワードを入力
するセルの番地。表示させる先頭セルの番地。
    • good
    • 0

以下のマクロを標準モジュールに作成してください。


データ量が多くないので、高速化は行っていません。

Option Explicit

Sub 検索処理()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxrow1 As Long
Dim word As String
Dim row1 As Long
Dim row2 As Long
Dim ctr As Long
Set sh1 = Worksheets("フリーワード検索用データ")
Set sh2 = Worksheets("フリーワード検索")
word = sh2.Range("C1").Value
If word = "" Then
MsgBox ("C1に検索文字を入力してください")
Exit Sub
End If
maxrow1 = sh1.Cells(Rows.Count, "C").End(xlUp).row '最大行取得
sh2.Rows("3:" & Rows.Count).ClearContents
row2 = 3
ctr = 0
For row1 = 3 To maxrow1
If InStr(1, sh1.Cells(row1, "C").Value, word, vbTextCompare) > 0 Then
sh2.Range("A" & row2).Resize(1, 7).Value = sh1.Range("A" & row1).Resize(1, 7).Value
row2 = row2 + 1
ctr = ctr + 1
End If
Next
MsgBox (ctr & "件マッチしました")
End Sub
この回答への補足あり
    • good
    • 2

>可能であれば検索ボタンも作れると嬉しいのですが、ご存知でしたら教えて頂けますでしょうか。


下記を参考にして作成してみてください。
不明点があれば、補足してください。

https://kokodane.com/macro9_2.htm

https://brain.cc.kogakuin.ac.jp/~kanamaru/lectur …
    • good
    • 0

> 閲覧者がすぐに探せるようにする目的で検索窓を作りたいと考え


> ております。
これだけだと FILTER関数を使わない理由にはならないのですが何
が障害になっているのでしょうか。

というのもマクロでやる場合 誰かが作ったコードをそのまま使っ
たとして 問題が起きた時あなたは修正できるのでしょうか。その時
になってまた質問し直すのでしょうか。

「私が使うのであれば~よいのですが」ということなら知識のない
技術には手を出さない方がいいように思います。

理由がよく分かりませんが FILTER関数をどうしても使いたくない
のであればパラメータクエリでやってもいいと思います。
    • good
    • 0

>設定の仕方も教えて頂けると大変助かります。

お手数をおかけして大変申し訳ありません。
見落としていました。
マクロを登録して実行するためには
あなたのPCのexcelをマクロが実行できるようにしておく必要があります。
こちらを一通り、読んで、実際に確認してみてください。
https://www.tipsfound.com/vba/01004

マクロを含んだブックを保存すると拡張子はxlsmになります。
(例 Book1.xlsm Book1.xlsxでは保存できません)
    • good
    • 0

No7です。


マクロを使用可能にするためには、各利用者のPCのexcelもそのように設定する必要があります。各利用者がマクロを使用したことがないなら、
設定の方法も含めて、各利用者に教えてあげてください。
    • good
    • 0
この回答へのお礼

tatsumaru77さん、この度は色々と親切に教えて頂きありがとうございました。無事に目的の機能を設定して全社に公開することができました。利用者にマクロ有効化の設定も周知しております。
今回実例に沿ったマクロを教えていただき、自分なりに一つひとつの式を確認しながら「こういう設定をするとこの動きになるんだ!」ということが理解できました。マクロ実行ボタンもあんなに簡単に作ることができるとは驚きです。おかげさまでマクロにとても興味が湧きました。これから勉強してみようと思います。改めましてありがとうございました。

お礼日時:2020/12/28 11:43

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

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


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