excelで名字と名前データに「斉・齊・齋・斎・齎」「はしご高・高」「惠・恵」などが含まれていたら別セルに表示させたいのですがどうしたらいいか教えてください。
A列に名字、B列に名前、C~列に記名間違えを起こさないように上記の文字を表示したいのです。表彰状や案内状など筆耕をお願いするときに使用します。
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (6件)

No.2です。


こんな感じで COUNTIF を、使用してみては如何でしょうか?
=IF(COUNTIF(A1,"*斉*"),"斉","")&IF(COUNTIF(A1,"*齊*"),"齊","")&・・・
    • good
    • 0
この回答へのお礼

ありがとうございます。
IFの7層のネストが引っかかっていたので「&IF」でつなげるとは思ってもいませんでした。VBAはこれから学んで生きたいと思っています。大変感激しています。

お礼日時:2009/05/25 12:01

#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文字列の位置に対応する列に散らばる。
    • good
    • 0

ユーザー定義関数を作ってみました。



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」 を検索して、マクロやユーザー定義関数等の、使用法を確認して下さい。
    • good
    • 0

これは、関数(もちろん組み合わせ)、配列数式など考えたが、それらでは、難しいように思う。

よほどの関数熟練者でも無いと難しいと思う。チェックすべき難漢字が複数あるので有るが、関数では繰り返しがむつかしい。
私は私論で、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) といれ下方向に式を複写。
上記の結果になった。
ーー
もうひとつ、高島屋の高など漢字を拾うのが普通では出来ない、難しさを思った。
    • good
    • 0

こんな感じで如何でしょう?


=IF(SUMPRODUCT(COUNTIF(A1,{"*斉*","*齊*","*齋*","*斎*","*齎*"})),"斉・齊・齋・斎・齎","")

後はそれぞれの漢字を、上記の式に置き換えて&で繋げれば、表示されると思います。
=IF(SUMPRODUCT(COUNTIF(A1,{"*○*","*○*"})),"○・○","")&IF(SUMPRODUCT(COUNTIF(A1,{"*×*","*×*"})),"×・×","")

この回答への補足

私の表現が悪くて、意図をお伝えしきれなかったようですみません。
イメージではこんな感じのものを希望してます。
  A    B    C    D    E
1 齊藤  洋子   齊
2 田中  惠         惠 
3 安斉  守    斉
4 高木  俊之            高
よろしくお願いいたします。

補足日時:2009/05/22 19:31
    • good
    • 0

「国語」のカテではないけど、タイトルの「任意の」は「特定の」のすべきですね。



》 C~列に記名間違えを起こさないように上記の文字を表示したい

幾つかのデータと表示された結果を示す具体例を示してください。後になって「そんなンじゃあ、ない!」ということのないように。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング