1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerAppsで文字列の全角半角無視して比較とか検索かけたい

1
Last updated at Posted at 2025-04-30

PowerAppsでいこう

最近、業務改善の流れで ようやくMicrosoft365の扱い方を
会社が認知してきたというか存在に気がついたというか。
TeamsListsを使って棚の物品管理に着手したようです。

Listsでは検索機能(列のフィルター)が弱い?

自分で調べた限りでは、各アイテムをチェックボックスで表示非表示を切り替えるだけみたいです。

そんなところにやっぱり要望があがりました。

部分一致するアイテム名だけでフィルターかけたいってよ。
最初は、いや使い方の話なら調べてから聞いてくれよ。なんて思っていましたが
よくよく使ってみると何ともまぁ使い勝手悪いこと。

この事に触れて、対策としてPowerAppsを利用する記事を見つけました。

全角文字を半角文字へ変換するというもの。

これを検索ワードへ応用する事で
文字列を全て 全角→半角変換した上で、一致判定するという事です。

これによって
大文字小文字は、Lower()Upper()関数が標準関数として用意されているので
小文字統一や大文字統一する事で
対応可能で
全角半角は、自作Componentの関数で半角統一する事で
対応可能となったわけですね。

検索関数用に自作Componentの中でワード検索するってのもお洒落かな。

まぁ、そんな話は置いといて

どういうわけだか どの記事にも英数字しか対応がされていない。
カタカナは!??記号とかは!!??

はい。
面倒だけどカタカナと濁点半濁点付きカタカナ、記号やらを対応できるように
先人の知恵に上塗りさせてもらってます。

いや、めっちゃ大変。全角半角文字ってこんなに多いのね。
そりゃみんなやらんわな。

少しでも、後の人々が楽になりますように。

以下、コンポーネント内のプロパティへ入力して活用して下さい。
変数名が英数字指してるってのはほっといて下さい。
もうカタカナ打って疲れたんです。

With({tblAlphabetNumList:Table(
        {key:"1",val:"1"},{key:"2",val:"2"},{key:"3",val:"3"},{key:"4",val:"4"},{key:"5",val:"5"},
        {key:"6",val:"6"},{key:"7",val:"7"},{key:"8",val:"8"},{key:"9",val:"9"},{key:"0",val:"0"},
        {key:"①",val:"1"},{key:"②",val:"2"},{key:"③",val:"3"},{key:"④",val:"4"},{key:"⑤",val:"5"},
        {key:"⑥",val:"6"},{key:"⑦",val:"7"},{key:"⑧",val:"8"},{key:"⑨",val:"9"},{key:"⓪",val:"0"},
        {key:"⑩",val:"10"},{key:"⑪",val:"11"},{key:"⑫",val:"12"},{key:"⑬",val:"13"},{key:"⑭",val:"14"},
        {key:"⑮",val:"15"},{key:"⑯",val:"16"},{key:"⑰",val:"17"},{key:"⑱",val:"18"},{key:"⑲",val:"19"},
        {key:"⑳",val:"20"},{key:"㉑",val:"21"},{key:"㉒",val:"22"},{key:"㉓",val:"23"},{key:"㉔",val:"24"},
        {key:"㉕",val:"25"},{key:"㉖",val:"26"},{key:"㉗",val:"27"},{key:"㉘",val:"28"},{key:"㉙",val:"29"},
        {key:"㉚",val:"30"},{key:"㉛",val:"31"},{key:"㉜",val:"32"},{key:"㉝",val:"33"},{key:"㉞",val:"34"},
        {key:"㉟",val:"35"},{key:"㊱",val:"36"},{key:"㊲",val:"37"},{key:"㊳",val:"38"},{key:"㊴",val:"39"},{key:"㊵",val:"40"}
        ,
        {key:"A",val:"A"},{key:"B",val:"B"},{key:"C",val:"C"},{key:"D",val:"D"},{key:"E",val:"E"},
        {key:"F",val:"F"},{key:"G",val:"G"},{key:"H",val:"H"},{key:"I",val:"I"},{key:"J",val:"J"},
        {key:"K",val:"K"},{key:"L",val:"L"},{key:"M",val:"M"},{key:"N",val:"N"},{key:"O",val:"O"},
        {key:"P",val:"P"},{key:"Q",val:"Q"},{key:"R",val:"R"},{key:"S",val:"S"},{key:"T",val:"T"},
        {key:"U",val:"U"},{key:"V",val:"V"},{key:"W",val:"W"},{key:"X",val:"X"},{key:"Y",val:"Y"},{key:"Z",val:"Z"},
        {key:"a",val:"a"},{key:"b",val:"b"},{key:"c",val:"c"},{key:"d",val:"d"},{key:"e",val:"e"},
        {key:"f",val:"f"},{key:"g",val:"g"},{key:"h",val:"h"},{key:"i",val:"i"},{key:"j",val:"j"},
        {key:"k",val:"k"},{key:"l",val:"l"},{key:"m",val:"m"},{key:"n",val:"n"},{key:"o",val:"o"},
        {key:"p",val:"p"},{key:"q",val:"q"},{key:"r",val:"r"},{key:"s",val:"s"},{key:"t",val:"t"},
        {key:"u",val:"u"},{key:"v",val:"v"},{key:"w",val:"w"},{key:"x",val:"x"},{key:"y",val:"y"},{key:"Z",val:"z"}
        ,
        {key:"ア",val:"ア"},{key:"イ",val:"イ"},{key:"ウ",val:"ウ"},{key:"エ",val:"エ"},{key:"オ",val:"オ"},
        {key:"カ",val:"カ"},{key:"キ",val:"キ"},{key:"ク",val:"ク"},{key:"ケ",val:"ケ"},{key:"コ",val:"コ"},
        {key:"サ",val:"サ"},{key:"シ",val:"シ"},{key:"ス",val:"ス"},{key:"セ",val:"セ"},{key:"ソ",val:"ソ"},
        {key:"タ",val:"タ"},{key:"チ",val:"チ"},{key:"ツ",val:"ツ"},{key:"テ",val:"テ"},{key:"ト",val:"ト"},
        {key:"ナ",val:"ナ"},{key:"ニ",val:"ニ"},{key:"ヌ",val:"ヌ"},{key:"ネ",val:"ネ"},{key:"ノ",val:"ノ"},
        {key:"ハ",val:"ハ"},{key:"ヒ",val:"ヒ"},{key:"フ",val:"フ"},{key:"ヘ",val:"ヘ"},{key:"ホ",val:"ホ"},
        {key:"マ",val:"マ"},{key:"ミ",val:"ミ"},{key:"ム",val:"ム"},{key:"メ",val:"メ"},{key:"モ",val:"モ"},
        {key:"ヤ",val:"ヤ"},{key:"ユ",val:"ユ"},{key:"ヨ",val:"ヨ"},
        {key:"ラ",val:"ラ"},{key:"リ",val:"リ"},{key:"ル",val:"ル"},{key:"レ",val:"レ"},{key:"ロ",val:"ロ"},
        {key:"ワ",val:"ワ"},{key:"ヲ",val:"ヲ"},{key:"ン",val:"ン"},
        {key:"ァ",val:"ァ"},{key:"ィ",val:"ィ"},{key:"ゥ",val:"ゥ"},{key:"ェ",val:"ェ"},{key:"ォ",val:"ォ"},
        {key:"ヤ",val:"ャ"},{key:"ュ",val:"ュ"},{key:"ョ",val:"ョ"},{key:"ッ",val:"ッ"}
        ,
        {key:"ー",val:"ー"},{key:"”",val:""""},{key:"’",val:"'"},{key:"‘",val:"`"},{key:" ",val:" "},
        {key:"¥",val:"\"},{key:"$",val:"$"},{key:"!",val:"!"},{key:"?",val:"?"},
        {key:"#",val:"#"},{key:"%",val:"%"},{key:"&",val:"&"},{key:"*",val:"*"},{key:"$",val:"$"},
        {key:"<",val:"<"},{key:">",val:">"},{key:"=",val:"="},{key:"~",val:"~"},{key:"|",val:"|"},
        {key:"@",val:"@"},{key:":",val:":"},{key:";",val:";"},{key:"+",val:"+"},{key:"・",val:"・"},
        {key:"/",val:"/"},{key:"\",val:"\"},{key:"_",val:"_"},{key:"^",val:"^"},{key:"。",val:"。"},{key:"、",val:"、"},{key:",",val:","},
        {key:"(",val:"("},{key:")",val:")"},{key:"[",val:"["},{key:"]",val:"]"},{key:"{",val:"{"},{key:"}",val:"}"},
        {key:"「",val:"「"},{key:"」",val:"」"}
        ,
        {key:"ヴ",val:"ヴ"},
        {key:"ガ",val:"ガ"},{key:"ギ",val:"ギ"},{key:"グ",val:"グ"},{key:"ゲ",val:"ゲ"},{key:"ゴ",val:"ゴ"},
        {key:"ザ",val:"ザ"},{key:"ジ",val:"ジ"},{key:"ズ",val:"ズ"},{key:"ゼ",val:"ゼ"},{key:"ゾ",val:"ゾ"},
        {key:"ダ",val:"ダ"},{key:"ヂ",val:"ヂ"},{key:"ヅ",val:"ヅ"},{key:"デ",val:"デ"},{key:"ド",val:"ド"},
        {key:"バ",val:"バ"},{key:"ビ",val:"ビ"},{key:"ブ",val:"ブ"},{key:"ベ",val:"ベ"},{key:"ボ",val:"ボ"},
        {key:"パ",val:"パ"},{key:"ピ",val:"ピ"},{key:"プ",val:"プ"},{key:"ペ",val:"ペ"},{key:"ポ",val:"ポ"}
    )},
    With({tblResult:
        AddColumns(
            Split(strInput,"") As SPLT,
            strOutput,
            Coalesce( LookUp(tblAlphabetNumList,key=SPLT.Value,val),SPLT.Value)
        ) },
        Concat(tblResult,strOutput)
    )
)


これをどう使うかっていうと
引用記事みたくComponentを作成して、そのプロパティにコピペして
自作コンポーネントを作っておきます。

つぎに、使いたいアプリへコンポーネントを挿入します。

CompConvert.ZenkakuToHankaku(textvalue)
自作コンポーネント名.プロパティ名(引き数)

という感じでユーザー定義関数のように扱います。

今回のListsの検索においては
これをFilter関数の中で検索するテーブル側の値たちと検索ワードを囲って
全角半角, 大文字小文字を含めて検索する事ができました。

検索結果が過大となるときに絞れるよう、完全一致で検索するようにモード切り替えするなんてのも良いですよね。いるかわからんけど僕はつけときました。

さいごに

詳しいコンポーネントの情報やデモなんかを付けておきたかったんですが
社内PCでの編集内容になるので共有できないんですよね。。
(そもそもアプリデータをプロジェクトごと外部に出力する方法を知らない。)

どーしても知りたい人はコメント下さい。
頑張って家PCで再現できるかやってみます。
たぶん時間取れんから数ヶ月は待たせれる自信があります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?