A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
No.4、5です。
MS365の環境で数式を作成してしまい、「配列数式にする」という説明を漏らしていました。
MS365および最新バージョン以外では配列数式にする必要があります。
前回回答のC1セルに記述する数式
=IFERROR(INDEX($A$1:$A$100,AGGREGATE(15,6,ROW($1:$100)/(MMULT(IFERROR(FIND(MID($B1&REPT(" ",2),COLUMN(INDIRECT("R1C1:R1C"&LEN($B1),0)),2),$A$1:$A$100),0),(ROW(INDIRECT("1:"&LEN($B1)))>0)*1)>0),COLUMN(A:A))),"")
は「CTRL+SHIFT+ENTER」で確定してください。
No.5
- 回答日時:
No.4です。
大変失礼しました。前回回答の数式(b)において、終端処理を漏らしていました。前回添付画像の例では問題ないのですが、問題が発生するケースがあります。
添付画像①をご覧ください。最低2文字一致ということは左から開始位置をずらして、2文字づつ抽出するとすれば、添付画像①のようにB2セルの右端に「関東」の文字がある場合、開始位置をずらして右端に到達すると、MID関数で2文字抽出しようとしても1文字しか抽出されず、しかもERRORにもなりません。
従って、「東」の一次が抽出され、これと一致する「東北」が抽出されてしまいます。
つまり、文字列の右終端では1文字にならないよう文字数を確保する処理しなければいけません。これを漏らしていたため、上記のような問題が発生してしまうわけです。
そこで、数式(b)を以下のように訂正します。添付画像➁をご覧ください。ご迷惑をおかけいたしました。
=IFERROR(INDEX($A$1:$A$100,AGGREGATE(15,6,ROW($1:$100)/(MMULT(IFERROR(FIND(MID($B1&REPT(" ",2),COLUMN(INDIRECT("R1C1:R1C"&LEN($B1),0)),2),$A$1:$A$100),0),(ROW(INDIRECT("1:"&LEN($B1)))>0)*1)>0),COLUMN(A:A))),"")
この数式で一致文字数を増やすのであれば、上記数式の「~REPT(" ",2)~」「~LEN($B1),0)),2~」の「2」の部分をお好みの数値に変更してください。
No.4
- 回答日時:
fujillinさんがユーザー定義関数での回答をお示しになっていますが、fujillinさんの関数は説明にあるとおり、
>最初に見つかった値を返します
ということなので、「全てを返す」を組み込み関数で考えてみました。
前提条件として、データA列、B列とも100行以下とします。
添付画像①をごらんください。C1セルに
=IFERROR(INDEX($A$1:$A$100,AGGREGATE(15,6,ROW($1:$100)/(MMULT(IFERROR(FIND(MID($B1,COLUMN(INDIRECT("R1C1:R1C"&LEN($B1),0)),1),$A$1:$A$100),0),(ROW(INDIRECT("1:"&LEN($B1)))>0)*1)>0),COLUMN(A:A))),"")・・・・・・(a)
という数式を記述し、C1~E5にコピーしています。
B1セルを例にとると、B1セルの一部(最低1文字)を含むA列のセルを全てC1セルから右方向へ表示します。
しかし、やってみると判りますが、最低1文字、つまりfujillinさんのユーザー定義関数でいうと、デフォルト状態で使用した場合、意図しないものが抽出されるのではないかという懸念がわきました。
添付画像①をみると、「東北」を含むものを探す意図なのに最低1文字にしたため、D1セルには「東」が一致する「関東」も抽出されてしまいます。
また、「関西」を含むものを探す意図なのに、同様にD2セルには「関」が一致する「関東」も抽出されてしまいます。
さらに、「中国」を含むものを探す意図なのに、同様にC4セルには「国」が一致する「四国」も抽出されてしまいます。
という訳で最低1文字は現実的でないと判断し、最低2文字の数式に修正したものが添付画像➁です。C1セルに、
=IFERROR(INDEX($A$1:$A$100,AGGREGATE(15,6,ROW($1:$100)/(MMULT(IFERROR(FIND(MID($B1,COLUMN(INDIRECT("R1C1:R1C"&LEN($B1),0)),2),$A$1:$A$100),0),(ROW(INDIRECT("1:"&LEN($B1)))>0)*1)>0),COLUMN(A:A))),"")・・・・・・(b)
という数式を記述し、C1~E5にコピーしています。
コピー範囲は右方向、下方向とも「空白」が表示されるまでオートフィルでコピーすれば良いと思います。
これで、ご質問者のご希望の状態になるのではないかと思います。
数式(a)と数式(b)を比較いただければ分かると思いますが、一致文字数を増やす場合は(a)の「1」が(b)で「2」となっている部分をお好みの数値に変更してください。
No.3
- 回答日時:
私の備忘録の中の一つの、どこかのサイトで、どなたかの昔の回答を応用したつもりなのですが、該当式は私には難解過ぎて上手に解説できません。
そういう次第なので、応用した数式を呈示するだけです。m(_._)m
貴方の希望通りの結果になるかどうか検証してみてください。
うまく動作しなかったら、その旨をお知らせください。m(_._)m
E2: =INDEX(検索文字,MATCH(TRUE,ISNUMBER(FIND(検索文字,A2)),0))
C2: =INDEX(A:A,MATCH(INDEX(検索文字,MATCH(TRUE,ISNUMBER(FIND(検索文字,B2)),0)),E:E,0))
【お断わり】上式は必何れも配列(CSE)数式として入力のこと
式を入力したら、Ctrl+Shift+Enterで確定操作をする数式です。
No.2
- 回答日時:
こんにちは
組み込み関数でやるとかなり面倒そうなので、ユーザ定義関数で処理する一例です。
使い方は、以下のようになります。
=PartialMatch(検索文字列, 対象セル範囲 [, 最低文字数])
※ ご提示の内容であれば、C1セルに
=PartialMatch(B1, A$1:A$10)
などと入力し、下方にフィルコピーすれば良いでしょう。
「対象セル範囲」の中から、「検索文字列」と部分一致する値を探し、最初に見つかった値を返します。
「最低文字数」は、連続するn文字以上のマッチを探すことを意味します。
(デフォルトは1です)
※ 事前準備として以下のコードを標準モジュールにコピペしてください。
Function PartialMatch(ByVal S0 As String, ByRef R As Range, Optional n As Long = 1) As String
Dim V0, v
Dim s() As String, i As Long
PartialMatch = ""
If n < 1 Or Len(S0) < n Then Exit Function
ReDim s(1 To Len(S0) - n + 1)
For i = 1 To UBound(s)
s(i) = Mid(S0, i, n)
Next i
V0 = R.Value
For Each v In V0
For i = 1 To UBound(s)
If InStr(v, s(i)) > 0 Then
PartialMatch = v
Exit Function
End If
Next i
Next v
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) 【Excel】指定した文字列に該当する行を重複しないようにリスト 3 2022/03/30 12:27
- Excel(エクセル) エクセルの数式で教えてください。 5 2023/02/10 15:11
- Excel(エクセル) エクセル関数について教えてください 4 2023/02/05 14:47
- Visual Basic(VBA) 先頭と末尾を指定して連続した数字を入力 1 2022/09/14 13:12
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 1 2023/02/27 22:21
このQ&Aを見た人はこんなQ&Aも見ています
-
餃子を食べるとき、何をつけますか?
みんな大好き餃子。 ふと素朴な疑問ですが、餃子には何をつけて食べますか? 王道は醤油とお酢でしょうか。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
2つの列を照合させてあいまい検索をしたいのですが
Excel(エクセル)
-
EXCEL関数で部分一致同士を検索する方法
Excel(エクセル)
-
エクセルで比較 かつ 部分一致について
Excel(エクセル)
-
-
4
エクセルの部分一致の抽出について(2つのセルの共通部分の抽出)
Excel(エクセル)
-
5
Excelで[表1]にあって、[表2]にないものを抽出する関数
その他(Microsoft Office)
-
6
リストと一致する値のセルを塗りつぶしたい。
その他(Microsoft Office)
-
7
EXCEL) 二つの列を照合して、あいまい検索をしたい
Excel(エクセル)
-
8
Edgeの[新しいタブで画像を開く]の使い方は?
その他(ブラウザ)
-
9
excel関数部分一致について教えてください。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの入力規則で2列表示したい
-
数式が入ったセルを含めて、数...
-
複数の文字列のいずれかが含ま...
-
SUMに含まれる範囲から特定のセ...
-
スペースとスペースの間の文字...
-
Excel上でのデータ数字が連番で...
-
エクセル:横長の表を改行して...
-
エクセルで曜日に応じた文字を...
-
エクセルでセルの値分の個数の...
-
「エクセル」特定の行(セル)...
-
列の数字に100をかけたい
-
エクセル セル内の文字数を超え...
-
空白行も含めてソートしたい
-
Excelにて、セルをダブルクリッ...
-
エクセルで表示されている数字...
-
エクセルで、毎日の走行距離(...
-
【Excel】での計算式教え...
-
エクセルのsumifでかけ算してか...
-
Excelでの検索結果を含む行だけ...
-
Excelのセル内文字の並び替えに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの入力規則で2列表示したい
-
複数の文字列のいずれかが含ま...
-
SUMに含まれる範囲から特定のセ...
-
数式が入ったセルを含めて、数...
-
Excel上でのデータ数字が連番で...
-
スペースとスペースの間の文字...
-
エクセル:横長の表を改行して...
-
エクセルで表示されている数字...
-
列の数字に100をかけたい
-
エクセルでセルの値分の個数の...
-
エクセルで1列全部10倍したい
-
エクセルのsumifでかけ算してか...
-
エクセル セル内の文字数を超え...
-
エクセルで、毎日の走行距離(...
-
時間を「昼間」と「夜間」に分...
-
エクセルで曜日に応じた文字を...
-
エクセルで小数を含む数値の抽出
-
別のセルに値が入力されたら、...
-
「エクセル」特定の行(セル)...
-
Excelのセル内文字の並び替えに...
おすすめ情報