- ベストアンサー
excelで任意の文字が含まれていると別セルに表示したい
excelで名字と名前データに「斉・齊・齋・斎・齎」「はしご高・高」「惠・恵」などが含まれていたら別セルに表示させたいのですがどうしたらいいか教えてください。 A列に名字、B列に名前、C~列に記名間違えを起こさないように上記の文字を表示したいのです。表彰状や案内状など筆耕をお願いするときに使用します。 よろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
No.2です。 こんな感じで COUNTIF を、使用してみては如何でしょうか? =IF(COUNTIF(A1,"*斉*"),"斉","")&IF(COUNTIF(A1,"*齊*"),"齊","")&・・・
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
#4です。関数でこんなのならできる。 例データ A列が氏名その右は結果(B-K列) 斉木 斉 山田 今村 斉 斉 木村 斉藤 斉 鈴木 斎藤 良心斉 斉 ー 斎 大齋藤 ー 齋 齋藤 惠子 ー 齋 ー 惠 ーー M1に 斉齋斎惠 と入れておく。実際は対象文字を増やしてください。 B1セルに =IF(NOT(ISERROR(FIND(MID($M$1,COLUMN()-1,1),$A1))),MID($M$1,COLUMN()-1,1),"") これをK列まで横方向に式を複写。 B2:K2を範囲指定し、+ハンドルを出して、データの有る最下行まで式を縦方向にを複写。 氏名が10文字(B-K列が10列)以下だと言う、例になっている。 ーー 結果 B-K列 ーー 欠点はM1文字列の位置に対応する列に散らばる。
- turuzou
- ベストアンサー率33% (15/45)
ユーザー定義関数を作ってみました。 Public Function extract1(x As String, y As String) Dim z As Long extract1 = "" If x = "" Then Exit Function For z = 1 To Len(x) If InStr(y, Mid(x, z, 1)) > 0 Then extract1 = extract1 & Mid(x, z, 1) & " " Next z If extract1 <> "" Then extract1 = Left(extract1, Len(extract1) - 1) End Function A1に 斎藤 、C1へ 斎 を表示するとして C1へ =extract1(A1,"斉齊齋斎齎") で、斎 を表示 G1に 斉齊齋斎齎 を入力しておき C1へ =extract1(A1,$G$1) で、斎 を表示 A1が 斎藤齊 ならば、C1に 斎 齊 と表示(抽出の文字間に半角スペース)されます。 google等で、「ユーザー定義関数 Excel」 を検索して、マクロやユーザー定義関数等の、使用法を確認して下さい。
- imogasi
- ベストアンサー率27% (4737/17069)
これは、関数(もちろん組み合わせ)、配列数式など考えたが、それらでは、難しいように思う。よほどの関数熟練者でも無いと難しいと思う。チェックすべき難漢字が複数あるので有るが、関数では繰り返しがむつかしい。 私は私論で、IF関数を多段ネストする方法は考えない。 こういう場合の出番はVBAでユーザー関数を作ることです。 VBAなら、対象難漢字を順次変えて、検索を繰り返すことが出来るので可能になる。 それでVBAでユーザー関数を作ってみた。 ツールーマクローVBEで出る画面で、挿入ー標準モジュール、そこの画面に Function fnd(a As Range) s = "" Dim ch As Range For Each ch In Range("漢字") Set x = a.Find(ch) If x Is Nothing Then Else s = s & ch End If Next fnd = s End Function をコピペ。 ーーー 一方 F1:F6に 斉 齊 齋 斎 齎 惠 を入れておく。 このセル範囲に、名前をつけ、「漢字」としておく。 例データ(A列、B列は関数の結果) A列 B列 斉木 斉 山田 才木 木村 斉藤 斉 鈴木 斎藤 良心斉 斉斎 大齋藤 齋 齋藤 惠子 齋惠 B列の関数は =fnd(A1) といれ下方向に式を複写。 上記の結果になった。 ーー もうひとつ、高島屋の高など漢字を拾うのが普通では出来ない、難しさを思った。
- turuzou
- ベストアンサー率33% (15/45)
こんな感じで如何でしょう? =IF(SUMPRODUCT(COUNTIF(A1,{"*斉*","*齊*","*齋*","*斎*","*齎*"})),"斉・齊・齋・斎・齎","") 後はそれぞれの漢字を、上記の式に置き換えて&で繋げれば、表示されると思います。 =IF(SUMPRODUCT(COUNTIF(A1,{"*○*","*○*"})),"○・○","")&IF(SUMPRODUCT(COUNTIF(A1,{"*×*","*×*"})),"×・×","")
補足
私の表現が悪くて、意図をお伝えしきれなかったようですみません。 イメージではこんな感じのものを希望してます。 A B C D E 1 齊藤 洋子 齊 2 田中 惠 惠 3 安斉 守 斉 4 高木 俊之 高 よろしくお願いいたします。
「国語」のカテではないけど、タイトルの「任意の」は「特定の」のすべきですね。 》 C~列に記名間違えを起こさないように上記の文字を表示したい 幾つかのデータと表示された結果を示す具体例を示してください。後になって「そんなンじゃあ、ない!」ということのないように。
お礼
ありがとうございます。 IFの7層のネストが引っかかっていたので「&IF」でつなげるとは思ってもいませんでした。VBAはこれから学んで生きたいと思っています。大変感激しています。