タグ別アーカイブ: Search関数

検索ボックスを作成する~委任警告対策含む~

【ギャラリーの中身を検索する検索ボックスを関数を使用して作成します!】

今回の記事では、データを一覧表示するギャラリーを検索する検索ボックスを自作します

検索ボックスは関数を使用します。ただ、よくこんな警告メッセージを見ると思います

こちらの警告メッセージは関数の使い方で回避することができます

部分的ではありますが、こちらのメッセージの回避方法も解説します

ポイント

検索ボックスの仕組みは、検索ボックスとは別にギャラリーの「Items」欄に組み込みます

今回の記事ではこの「Items」にSearch関数、もしくはFilter関数を組み込みます

上記の画像では、警告が出ていますが、こちらが委任警告のメッセージです

データソースがSharepointリストの場合、Sharepointリストが検索にはあまり向いていない仕組みのためにこのメッセージがでます

ですので、通常ですと500件までしか表示されません

今回はこちらの委任警告に対する対策も併せて解説を行います

ちなみに、委任警告についてはこちらに分かりやすい記事がありますので参考までにご紹介しておきます

検索ボックスフォームの作成

検索ボックスは四角とアイコンを組み合わせてフォームを作成します

アイコンを入れるとことで検索ボックスらしくなりますが、通常の設定ですと検索アイコンと入力した検索文字が重なってしまいます

こちらはパティングの「左」の値を調整して、入力位置の間隔をあけます

Search関数

Search関数は以下の文法で作成します

=Search(データソース,検索文字,検索対象文字列)

検索文字は検索フォームのテキストボックスを指定します

単にテキストボックスの名前だけを指定するとエラーになりますので注意が必要です

×:txtSearch ⇒ 〇:txtSearch.Text

Filter関数

Search関数と同様にFILTER関数でも検索が行えます

FILTER関数内にはStartsWith関数も組み合わせます

Filter(地域データ,StartsWith(Title,txtSearch.Text))

FILTER関数関数では、データソースから指定条件のものを絞り込んで抽出します

通常はFilter(データソース、列名=××)という感じで指定します

今回は、指定条件の箇所をStartsWith関数(①列名,②指定文字列)で置き換えることで、指定列①の中で指定文字列②ではじまるものを抽出しています

このFilter関数とStartsWith関数の組み合わせだと、何がいいのかというと、委任警告のメッセージが消えます

この辺の仕組みはMicrosoftのHPにも解説されています

詳しく知りたい方はこちらの記事もぜひご確認ください

<まとめ>

今回はSearch関数、Filter関数を使用して検索ボックスを作成する方法を解説しました

委任警告のメッセージについても触れましたが、この問題はPower Appsでは必ずついてくるものです

対策は今回紹介した関数の工夫が望ましいです

ただ、設定で対策も行えることを最後に紹介しておきます

上の画像の箇所は2000まで増やすことができます

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

文字列の抽出~上級編17回

 エクセル関数で特定の文字列を抽出する場合には、RIGHT関数やLEFT関数、そしてMID関数が良く使われます。今回の解説では、Power Queryでこれらの関数と同じ様に特定の文字列を抽出する方法を解説します。

 また、特定の文字列の位置が不特定の場合、エクセル関数ではFIND関数やSEARCH関数が前述の関数と組み合わせて使用されます

Power Queryでは、特定の文字列の位置が不特定の場合でも一括で抽出できる裏技がありますので、そちらについても解説を行います

例えば、

 下のGIF画像のように、「-」が不規則に出現する文字列の中から「左から2つ目3つ目ハイフン」の文字列を抽出することもできます

では、Power Queryにて特定文字列を抽出する方法について詳細な解説をはじめます

 以降の解説は、全てPower Queryエディタ(以降、エディタ)を開いた状態から解説を行います

エディタ内で使用するタブは「変換タブ」、使用メニューは「抽出」になります

目次

1.左から指定した長さの文字数を抽出

2.右から指定した長さの文字数を抽出

3.位置を指定して文字列の途中から指定した長さを抽出

4.特定の文字列の前後の文字を抽出

5.「特定の文字列の間」の文字を抽出

<まとめ>

1.左から指定した長さの文字数を抽出

エクセル関数では、LEFT関数で行う内容です

こちらは、下の画像の「最初の文字」から抽出を行います

上の画像の「最初の文字」をクリックすると下の画像の画面が開くので、こちらで抽出する長さを指定します

OKボタンを押せば、下のGIFのように左から3文字が抽出されます

2.右から指定した長さの文字数を抽出

こちらはエクセル関数で言えば、RIGHT関数になります

下の画像にある「最後の文字」から指定します

1.の「左から指定した長さの文字数を抽出」と同じ様に、「最後の文字」をクリックした後に開くダイアログボックスにて抽出する長さを指定します

後の処理は、1.と同じです

続きを読む 文字列の抽出~上級編17回

エクセルなのに・検索付きリスト_2/2

今回は、検索付きリストの具体的な作成方法を紹介します

作成するには、3つの手順を踏みます

ちなに、VBAは一切使いません!

➀検索文字を作成

リストに入力された文字から検索文字を作成する

➁候補データの作成する

検索文字をもとにして、リストデータから候補データを作成する

③候補データの表示

②で作成した候補データをリスト表示します

上の①~③をエクセルシート上で表すと、次の画像の通りとなります

画像に alt 属性が指定されていません。ファイル名: 3-1.jpg

上の画像の中で、最もポイントとなるのはです!

ここで、エクセルの新機能である、1セルに出力範囲が収まらない関数を使用します!

では、ここから詳細な解説を開始します

➀検索文字を作成

下の画像の通り、C1セルに「=E2」を入力し、リスト内の文字(E2セル)を、検索文字としてC1セルに抽出します

➁候補データを作成する

ここから次の3つの関数を組み合わせて、検索文字から候補データを作成しますⅰ)SEARCH関数

ⅱ)ISNUMBER関数

ⅲ)FILTER関数

ⅰ)SEARCH関数

構文/SEARCH(検索文字列,対象,[開始位置])

まずは下のGIF画像にて、この関数を入力した時の様子を確認してください

1つのセルに入力したら、対象(リストデータ)に該当したデータを複数出力してくれます

ちなみに、上のGIFで出力される「1」の意味合いは想像がつきますでしょうか?

もし、検索文字が「悟」の場合には、下の画像のように「4」が出力されます

つまり、SEARCH関数は検索文字が含まれる位置を出力してくれるのです!

ですので、検索文字が含まれる候補データを、リストデータの中から特定できるようになりました

ただし、あくまで候補データを特定しただけで、候補データとしてはまだ使用できませんので、次のⅱ)でもう少し修正を加えます

ⅱ)ISNUMBER関数

構文/ ISNUMBER(判定対象)

ISNUMBER関数は判定対象が「数字」かどうかを判定する関数です

判定対象が数字であればTRUE数字でなければFALSEを返します

ですから、前述ⅰ)のSEARCH関数で出力した内容(例/1や4)をISNUMBER関数の判定対象にした場合にはどうなるでしょうか?

ISNUMBER関数の判定がTRUEのものは「候補データとして使えるもの」、FALSEは「候補データとして使えないもの」として区分することができます

ⅲ)FILTER関数

構文/FILTER(a:対象,b:条件式,c:省略可/合致するもの無の場合)

➁の仕上げとしてFILTER関数を使います

FILTER関数は、aの対象リストの中からbの条件式に合致するものを抽出します

今回は、FILTER関数で下の画像の「A列/リストデータ」の中から、「C1セル/検索文字」が含まれているものを抽出します

画像に alt 属性が指定されていません。ファイル名: 6.jpg

但し、検索文字に該当するかどうかについては、直接は判定することができないので、b条件式を2段階に分けます

ちなみに、条件式はTRUEかFALSEかどうか、でも設定可能です!

1段階目➡SEARCH関数にて、リストデータの中で検索文字を含むものは数値化

2段階目➡1段階目で数値化したものをISNUMBER関数でTRUEとFALSEに置換

では、上記の「1段階目」と「2段階目」を実際にFILTER関数で表現してみしょう!

FILTER( _

a:A列/リストデータ _

b:ISNUMBER(SEARCH(C1セル/検索文字,A列/リストデータ)) _

)

上のb条件式を前述の1段階目と2段階目で分けると次の通りとなります

1段階目 ➡ SEARCH(C1セル/検索文字,A列/リストデータ)

1段階目で検索文字が含まれている位置を1や4などに数値化します

2段階目 ➡ ISNUBER(1段階目)

1段階目で数値化されたものをTRUE、それ以外をFALSEで返します

では、上記のFILTER関数の実際の”動き”をGIF画像で確認してみましょう

C1セルに設定した、E2セルとの連動式(=E2)を一旦外し、「鈴木」と入力してみます

検索文字の「鈴木」を含む候補データが、A列のリストデータから抽出されています

検索文字の「鈴木」を入力する前は、全てのデータが出力されています

これは、氏名の間に空白が含まれているためです

③候補データをリストに表示する

②で候補データを抽出する仕組みができました

いよいよ、候補データから検索付きリストを作成します

➀で検索文字を入力しますが、通常のリストの作成の仕方では、エラーになってしまいます

何故なら、検索文字自体はリストに含まれていないからです

例えば、下の画像でいえば、鈴木健司~鈴木修の中に「鈴木」と一致するものがないです

ではどうするか?

リスト機能にはエラーメッセージを調整する機能があるので、そちらの機能を使います

上の画像の黄色の箇所「無効なデータが入力されたらエラーメッセージを表示する」のチェックを外します

そうすれば、リストに完全一致しないものをリストに入力してもエラーメッセージは出力されません

そして、最後にリストの範囲の仕方を工夫しましょう

リストの「元の値」として、候補データが出力される最初のセルを指定しましょう!

 そして、を加えれば、出力される候補データ数に合わせてリストが自動作成されます!

下のGIF画像は#の使用例です!

<まとめ>

 今回は、エクセルの新機能(SEARCH関数、FILTER関数)とリスト機能を組み合わせてリストに検索機能を加えることができました

 SEARCH関数により、検索文字を含む文字列から検索文字が含まれる「位置/数値」を抽出し、ISNUMBER関数でTRUEFALSEに置き換えるのがポイントです

 検索文字が含まれているかどうかをTRUEかFALSEに置き換えることで、FILTER関数の条件式として活用することができます

 FILTER関数をはじめとする、エクセルの新関数を有効活用すれば「VBA無」でもかなりの事ができますので、今回を機会に、ぜひ研究してみてください

FILTER関数の使用例については、他にも記事を書いています!

 もし、今までリスト機能を使ったことがない方がいたら、エクセル画面上のデータタブからデータの入力規則を見つけてみてください

データの入力規則から前述のリストが作成できます

解説は以上です

長文に最後までお付き合い頂き誠にありがとうございました

参考までに今回使用したエクセルファイルを添付します

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ

にほんブログ村

エクセルなのに・検索付きリスト_1/2

エクセルのリスト機能はとても便利です

私も重宝しています

ただ、リストデータが一定数を超えるととても探しづらくなります・・・

とにかく、カーソルを下へ下へと旅が続きます

ところが、

エクセルの新機能を使えば、検索を行いながらリスト選択ができるのです

上のGIFでは、まずリストの中に”鈴木”と入力します

その後に、▽を押すとリストデータ内で”鈴木”を持つデータが表示されます

このリストを作成するのにVBAは使用しません

エクセル新機能と言える2つの関数を使用します

普通、関数と言えば値が1つ返ってくるのが常識でした

今回の検索付きリストで使用するSEARCH関数とFILTER関数はこの常識を覆すものです

例えば、下の画像で言えば、C3セルにSEARCH関数を入力すると「鈴木」を含む位が複数出力されます

今回のリスト作成を通じて、ぜひ、これらの新機能も有効活用できるようになりましょう!

では次回、詳細を解説していきます

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ

にほんブログ村