
全角半角、ひらがなカタカナ、大文字小文字
関係無しで同じもの探したいのですが
あいうえお、アイウエオ、アイウエオ
abc,ABC,abc,ABC
これらを同じ文字として認識したいので
=JIS(UPPER(PHONETIC(A1)))
こうすると全ての文字が全角、大文字、カタカナになるでよいのですが
=JIS(UPPER(PHONETIC(A1&A2)))
=JIS(UPPER(PHONETIC(CONCATENATE(A1,A2))))
とすると数式に問題がありますと、上手く表示してくれません
どうしてなんでしょう?
なんとかならないかなぁ~
No.3
- 回答日時:
まず、最初に、CONCATENATE という、長い関数名は、Microsoft が、これは使ってくれるなというメッセージを込めて付けた名前だと、私は信じています。
それでなければ、こんな名前を命名するはずがありません。
これは、Lotus123との互換性を持たせるために残した関数の名残りです。
Microsoft 系では、文字と文字のつなぎ方は、「&(アンパサンド)」を使います。
ふりがなの仕組みは、セルの情報の中に、ふりがなというデータがあって、それをPHONETIC関数が取り出します。
CONCATENATE(A1,A2)としたら、文字列になって、一緒に付け加えられた、ふりがなデータなくなってしまいます。ここには、情報はありません。
それは、皆様がご説明になったとおりです。
>あいうえお、アイウエオ、アイウエオ
>これらを同じ文字として認識したい
これを、VBAでは、TextCompare(テキストコンペア)と言いますが、VBAには、StrComp 関数はあっても、ワークシート関数にはありません。それで、VBAから借りてくるという方法はいかがでしょうか。
もちろん、文字を純粋に比較しているので、セルの中身を探しているわけではありません。
[ALT+ F11] で画面を開いたら、挿入-標準モジュールで以下のコードを貼り付けます。それで、同じく、[ALT+ F11] で閉じたら、この数式を早速試してみます。(念のために、エクセルの画面の上のファイル名が正しいか確認してください)
'-------------------
Function fStrComp(arg1 As Variant, arg2 As Variant) As Boolean
If StrComp(Trim(arg1), Trim(arg2), vbTextCompare) = 0 Then
fStrComp = True
Else
fStrComp = False
End If
End Function
'---------------------
A1:あいうえお
B1:アイウエオ
C1:
=fStrComp(A1,B1)
これでTRUE が出るかためしてみてください。
----------------------
なお、文字列を探すという場合も、TextCompre という方法を利用します。
Function fInStr(arg1 As Variant, arg2 As Variant, Optional flg = False)
'1番目が被検索値、2番目引数が検索値
Dim i As Long
i = InStr(1, arg1, Trim(arg2), vbTextCompare)
If i > 0 Then
If flg Then
fInStr = i
Else
fInStr = True
End If
Else
fInStr = False
End If
End Function
'---------------------------
使い方は、
A1: ABC
B1: abc
=fInStr(A1,B1) B1の文字をA1で探すということです。
TRUE が同じように出ます。
=fInStr(A1,B1,TRUE)
A1:挨拶は幼稚園、あいうえおは小学校、abcは中学校
ですと、18と数字が返るのは、18番目に該当する文字があるということを示します。
=MID(A1,18,100) '最後の100は、ダミーの数字です。
abcは中学校
と出てきます。
これらは、本格的なマクロではありませんが、ワークシートに不足しているものをVBAで補うという方法のひとつです。
No.2
- 回答日時:
PHONETIC 関数は対象文字列を受け取りたいのではなく、セル参照を受け取りたいからなのでは?
推測ですが、セル範囲を受け取って、そこに含まれるセルに関数内部からアクセスしてよみがな情報を取り出しているのだと思います。
https://support.office.com/ja-jp/article/PHONETI …
だから PHONETIC(A1 & A2) ではなく、PHONETIC(A1:A2) という書き方になっているのだと思います。
PHONETIC(A1 & A2) → A1 の値と A2 の値を連結した文字列
PHONETIC(A1:A2) → A1 から A2 の範囲
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 10:07
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 08:37
- その他(Microsoft Office) 英数字のみ全角から半角に変換 4 2023/07/28 14:48
- Excel(エクセル) Excelの関数で実現可能か知りたいです 5 2023/08/06 08:58
- C言語・C++・C# S-JIS → JIS コード変換するには 3 2023/02/09 23:55
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
エクセルで指定したセルのどれ...
-
エクセルの書式設定の表示形式...
-
セルをクリック⇒そのセルに入力...
-
Excelでのコメント表示位置
-
Excel 例A(1+9) のように番地の...
-
エクセル オートフィルタで絞...
-
【エクセル】IF関数 Aまたは...
-
ハイパーリンクの参照セルのズ...
-
EXCELのセルの中の半角カンマの...
-
EXCEL VBA セルに既に入...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
エクセルのセルの枠を超えて文...
-
Excelで、「特定のセル」に入力...
-
Excelで変曲点を求める関数を教...
-
対象セル内(複数)が埋まった...
-
Excel2003 の『コメント』の編...
-
エクセルの一つのセルに複数の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
スプレッドシートで複数のプル...
-
excelで日付関数の文字列変換の...
-
エクセルで指定したセルのどれ...
-
貼り付けで複数セルに貼り付けたい
-
枠に収まらない文字を非表示に...
-
セルをクリック⇒そのセルに入力...
-
エクセルの一つのセルに複数の...
-
数式を残したまま、別のセルに...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルの書式設定の表示形式...
-
EXCEL VBA セルに既に入...
-
excelの特定のセルの隣のセル指...
-
エクセルのセルの枠を超えて文...
-
Excelでのコメント表示位置
-
エクセル オートフィルタで絞...
-
Excelで数式内の文字色を一部だ...
おすすめ情報