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を見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

QExcel2013 VBA A列とB列の文字をA列とB列とC列に移動させる方法

A列とB列に文字が入っているのですが、下記のようにA列とB列とC列に文字を移動させたいです。
(A列の数字は必ず奇数のA列に入っています。)
VBAのコードを教えて下さい。

例えば
A1 1  B1 cat
A2 空白 B2 猫
A3 空白 B3 dog
A4 空白 B4 犬
A5 2  B5 whale
A6 空白 B6 クジラ
A7 3  B7 rabbit
A8 空白 B8 ウサギ

とデータがある場合

A1 1  B1 cat  C1 猫
A2 空白 B2 dog  C2 犬
A3 2  B3 whale  C3 クジラ
A4 3  B4 rabbit C4 ウサギ

としたいです。

実際、データは、A5196まであります。

Aベストアンサー

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Application.ScreenUpdating = True
MsgBox "完了"
End Sub

少しは短縮できると思います。m(_ _)m

No.1です。

>実際、データは、A5196まであります。

前回のコードは一つずつカット&ペーストしていますので
かなりの時間を要すると思います。
↓のコードに変更してみてください。

Sub Sample2()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "B").End(xlUp).Row
Application.ScreenUpdating = False
With Range(Cells(1, "C"), Cells(lastRow, "C"))
.Formula = "=IF(MOD(ROW(),2)=1,B2,"""")"
.Value = .Value
.SpecialCells(xlCellTypeB...続きを読む

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Q【EXCEL】条件付き書式、A列、C列、D列、E列が同じ値の時にB列の背景色を変えたい

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青になると思うのですが実際の結果は画像の通りです。

先の話の通りA列、C列、D列、E列の値が同じ時だけ
B列のセルの背景を青にしたい場合はどうい数式になるのでしょうか?

すいませんが、詳しい方、数式(関数?)で説明できる方よろしくお願い致します。

追記
可能でしたらA列、C列、D列、E列が空白の時はB列の背景色をなしにしたいと思っております。
→A列、C列、D列、E列に値があって、かつ同じ値の場合のみB列の背景を青にしたいです。

お世話になります。

エクセルの条件付き書式の数式の使い方について教えて下さい。
A列、C列、D列、E列の値が同じ時にB列のセルの背景を青に
塗りつぶしたいと思っています。

なので、「数式を使用して、書式設定するセルを決定」、
「次の数式を満たす場合に値を書式設定」で、数式を
「=A1=C1=D1=E1」と入力し、書式、塗りつぶし、青、
を選択して、条件付き書式を設定しました。
すると、、、画像のような結果になります。

私の感覚だと画像でセルの値が「11」~「15」の時だけ
B列が青にな...続きを読む

Aベストアンサー

AND関数を使えば判定ができるのでは?
 =AND(A2<>"",A2=C2,C2=D2,D2=E2)

A列には常に判定する数値が入っているなら「A2<>""」は不要です。

参考サイト
http://www.relief.jp/itnote/archives/003940.php

QExcelでセルをプルダウンに設定、解除する方法

こんにちは、OS XP、Office 2003です。

Excelでセルをプルダウンに設定する方法、解除する方法を教えて下さい。
例えばA1商品を選んで、B1で品番、C1で価格とかをそれぞれプルダウンで選ぶようにしたいのです。
宜しくお願いします。

Aベストアンサー

プルダウンに設定したい場所(プルダウンの中に表示する内容が同じ範囲)を選択しましょう。つぎに、メニューバーのデータをクリックしてその中にある『入力規則』をクリックしてください。すると、入力規則ダイアログボックスが表示されます。
そのダイアログボックスの『設定』をクリックしてそこにある『入力値の種類』ドロップダウンメニューをクリックして『リスト』をクリックします。すると、『元の値』というボックスが現れるので、そこにリストにしたい文字を入力します。
入力の仕方は2通りあります。
ひとつは、リストをセルに別々に打っておいてそれを選択する方法です。
もうひとつは直接入力する方法です。
たとえば価格100・200・300をリストにしたい場合は
『100,200,300』(カンマ使用で『』はいらない)
と入力します。そしてOKをクリックすれば、選択したセルにプルダウンメニューが表示され、そこから選ぶことができます。
ただし、リスト以外の項目(たとえば『100,200,300』と入力した場合)は100・200・300以外の文字をそのセルに入力できなくなるので注意してください。

つぎに解除の仕方です。
解除は簡単で設定のされたセルを選択して入力規則ダイアログボックスを開いて設定の『すべてクリア』をクリックすれば大丈夫です。

フィルタのことでしたらご報告お願いします。

プルダウンに設定したい場所(プルダウンの中に表示する内容が同じ範囲)を選択しましょう。つぎに、メニューバーのデータをクリックしてその中にある『入力規則』をクリックしてください。すると、入力規則ダイアログボックスが表示されます。
そのダイアログボックスの『設定』をクリックしてそこにある『入力値の種類』ドロップダウンメニューをクリックして『リスト』をクリックします。すると、『元の値』というボックスが現れるので、そこにリストにしたい文字を入力します。
入力の仕方は2通りあります...続きを読む

Q行のデータ(a列b列c列)をd列に表示したい

a1、b1、c1のセルに入力したデータをd1セルに表示したい。可能でしょうか。一例「a1セルに1と入力、b1セルに2と入力、c1セルに3と入力しd1セルに123と表示する」

Aベストアンサー

d1セルに =a1&b1&c1

エクセルですよね?

QExcel プルダウンの作成

Excel で 決まった内容を入力する事が多いので、
選択式にしたいと思い、プルダウンを作成したいのですが。

1つのセルにプルダウンを設定し、内容としては
ABC
あいう
アイウ
の中から選んで選択するとそれがセルに入る。

どうしたら良いのでしょうか?

Aベストアンサー

次の方法は如何でしょうか。
(1)セル選択→データ→入力規制
(2)入力値の種類でリストを選択
(3)元の値でABC,あいう,アイウを入力、またはメニューセル範囲指定(例えば、$A$1:$A$5 等)も可。
   

Qエクセルで、A列に日付をB列に曜日、C列からF列までにデータを入れるよ

エクセルで、A列に日付をB列に曜日、C列からF列までにデータを入れるように作成しています。
条件付書式で土日祭日の場合はC列からF列に色を表示させています。
この色付セル(土日祭日)の場合にはデータ入力が無いので自動で0を表示させ、なおかつデータ入力が出来ないようにしたいのですが、そのようなことは出来るでしょうか。エクセルは2003を使ってます。

Aベストアンサー

C2セルに以下の数式を入力します。

=IF(AND($A2<>"",WEEKDAY($A2,2)>5),0,"")

同様にC2セルに以下の入力規則を設定します。

「データ」「入力規則」で「ユーザー設定」にして数式欄に以下の式を入力します。

=WEEKDAY($A2,2)<6

最後にC2セルを右方向および下方向にオートフィルします。

QExcel2010 プルダウン制御について

上記御教示ください。

一つのセルと一つのプルダウン付のセルが並んでいるとします。一つのセルへ入力した値(の2-3桁目)により、一つ目のプルダウン付のセルで表示されるリストが変わるような事は可能なのでしょうか。

例えば、添付ファイルのような事をやりたいです。
A2セルへ1AA11と入力した場合、B2セル(プルダウン付のセル)ではAAに対応する事業部X1-X5がリスト表示されます。 同様にA2セルへ1BB11と入力した場合、B2セル(プルダウン付のセル)ではBBに対応する事業部Z1-Z2がリスト表示されます。同様にA2セルへ1CC11と入力した場合、B2セル(プルダウン付のセル)ではCCに対応する事業部ブランクがリスト表示されます。

上記のような事をやりたいのですが、①Excel2010で実現できるのかどうか②できるとしたらどのような方法で実現することができるのか(極力簡易的な方法だとうれしいです・・)を御教示願います。

宜しくお願いいたします。

Aベストアンサー

こんばんは!

Excel2010というコトですので、
Excel2010以降では入力規則の「リスト」の「元の値」は直接別シートを参照できます。

まず↓の画像のように別シート(画像ではSheet2)に表を作成しておきます。

A列を範囲指定 → データ → 入力規則の「リスト」 → 元の値の欄の右側四角をクリック → Sheet2の1行目を範囲指定 → もう一度四角をクリック!
これでA列リストが設定できました。

次にB列を範囲指定 → ・・・中略・・・ → 元の値の欄に↓の数式を入れます。
(この画面から直接コピー&ペーストしてください)

=OFFSET(Sheet2!$A$1,1,MATCH(A2,Sheet2!$1:$1,0)-1,COUNTA(OFFSET(Sheet2!$A:$A,,MATCH(A2,Sheet2!$1:$1,0)-1)))

これでA列に対応した「事業部」がB列のリスト候補に表示されるはずです。

※ 画像では表はC列までしかありませんが、
何列あっても大丈夫です。m(_ _)m

Q作業列なしで各行のA列とB列の数値の小さい方に、C列の数値をかけた値の和を求めたい

エクセルで、A列B列C列の1行目から100行目まで、それぞれ数値が入っているとします。
各行のA列とB列の数値の小さい方に、C列の数値をかけた値の和を求めたいです。
D列を作業列にするなら、D1に「=MIN(A1,B1)*C1」として、これをD100までコピーして、「=SUM(D1:D100)」で得られる数値を求めたいのですが、元となるデータが頻繁に追加されることも有り、作業列の追加が難しい状況です。
SUMPRODUCT関数を使おうにも、「=SUMPRODUCT(MIN(A1:A100,B1:B100),C1:C100)」では、A1からB100までの200セルのうちの最小値に、C1からC100の数値をそれぞれかけた値の和が返されてしまいます。
なにかよい方法があれば、お知恵を拝借できないでしょうか。

Aベストアンサー

こんにちは!

範囲を最初から多目にしておいてはダメですか?
SUMPRODUCT関数はどこかの列が空白の場合は「0」とみなされ合計しても結果に変化はないはずですので・・・

どうしても作業列を使用したくない場合の一例です。
表示したいセルに
=SUMPRODUCT(IF(A1:A1000<=B1:B1000,A1:A1000,B1:B1000),C1:C1000)

配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合は上記数式をドラッグ&コピー! → 表示したいセルを選択 → 数式バー内に貼り付け  → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定します。
数式の前後に{ }マークが入り配列数式になります。

※ SUMPRODUCT関数自体が配列数式になりますが、
配列数式内に配列数式を入れた感じになります。m(_ _)m


人気Q&Aランキング

おすすめ情報