• ベストアンサー

エクセル 文字の不足を検出させる方法

エクセル2003使用  例とし、A1~A9の9箇所のセル(都度入力する箇所はこの範囲内で変わります)に △□◎○×▽ の6個のいずれかの値(文字)を入れるのですが、この6個の文字が1つでも、もれていたら何らかのエラー表示(セルの色が変わるなど)をさせる事はできないものでしょうか?(可能なら6個の文字(△□◎○×▽)の何が不足してるかわかればなお良いのですが)  条件付書式やマクロなどで対応できないでしょうか。よろしくお願いします。(△□◎○×▽は入力規則のリストから選択するようにしてあります)

質問者が選んだベストアンサー

  • ベストアンサー
  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.4

ユーザー定義関数を作ってみました。 参考になれば幸いです。 '=======標準モジュールに記載============================== Private Function myChk(ByVal argRng As Range) As String   Dim myList As Variant   Dim myAns As Variant   Dim i As Integer      Application.Volatile   myList = Array("△", "□", "◎", "○", "×", "▽")   For i = 0 To UBound(myList)     myAns = Application.Match(myList(i), argRng, 0)     If IsError(myAns) = True Then       myChk = myChk & myList(i)     End If   Next i   If myChk = "" Then     myChk = "完"   Else     myChk = myChk & "が記入されていません"   End If End Function '=======使い方============================== ' 適当なセルに =myChk(A1:A9)  と入力

naginagisa
質問者

お礼

おそくなりました。 すばらしいものを教えて頂き感謝しています。 ありがとうございました。

その他の回答 (5)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

解答No1です。 ごめんなさい次の式は =IF(SUM(H1:H6)<6,"「"&INDIRECT("H"&MATCH(0,H1:H6,0))&"」が抜けています","") 次のように訂正してください。 =IF(SUM(H1:H6)<6,"「"&INDIRECT("G"&MATCH(0,H1:H6,0))&"」が抜けています","")

  • a987654
  • ベストアンサー率26% (112/415)
回答No.5

B1セルに =MID(" △",(COUNTIF(A1:A9,"△")=0)*1+1,1)&MID(" □",(COUNTIF(A1:A9,"□")=0)*1+1,1)&MID(" ◎",(COUNTIF(A1:A9,"◎")=0)*1+1,1)&MID(" ○",(COUNTIF(A1:A9,"○")=0)*1+1,1)&MID(" ×",(COUNTIF(A1:A9,"×")=0)*1+1,1)&MID(" ▽",(COUNTIF(A1:A9,"▽")=0)*1+1,1) これで”△□◎○×▽”のデータのある部分が全角ブランクに 表示されます。(すべてあれば6文字の全角ブランク) このままでもエラー表示となりますが 案1.このセルの文字色を赤にでもしておく 案2.条件付き書式で <>"      "を設定 いかがですか?

naginagisa
質問者

お礼

おそくなりました。 ありがとうございます。 このような方法もあるのですね。 勉強になりました。

noname#204879
noname#204879
回答No.3

数式が  =IF(A1="","",SUBSTITUTE("△□◎○×▽",A1,"")="△□◎○×▽")

naginagisa
質問者

お礼

ありがとうございます。 やり方が悪いのか希望の結果になりませんでした。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 参考になるかどうか判りませんが・・・ 同一セルに入力規則を二通り設定することはできませんので 苦肉の策ですが、条件付書式を併用してみてはどうでしょうか? ↓の画像で説明させていただくと、 A1~A9セルは入力規則からリスト表示させています。 他のセルに(画面ではA13~B13セル)に別表を設けて、 A13セルに =COUNTIF($A$1:$A$9,B13) という数式を入れ、オートフィルで下へコピー 次に B13セルをアクティブにして、メニュー → 書式 → 条件付書式を選択 「数式が」を選択し、数式欄に =A13=0 として、書式から塗りつぶしのパターンを「赤」に選択します。 B13セルの書式をオートフィルでB18までコピーします (この場合オートフィルオプションで、「書式のみコピー」にします) これでA1~A9セルに選択されていないものセルが赤くなります。 尚、余計なお世話かもしれませんが、リスト範囲に空白セルをひとつ選んでおくと、 Deleteで消すのではなく、リストから空白を選べると思います。 以上、参考になれば幸いですが、 他に良い方法があれば読み流してくださいね。m(__)m

naginagisa
質問者

お礼

おそくなりました。 なるほど・・とこのようなやり方もあるのかた感心しています。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

例えばリストがG1セルからG6セルに入っているとします。 わかりやすいのは作業列を作って、例えばH1セルには次の式を入力してH6セルまでオートフィルドラッグします。 =IF(COUNTIF(A$1:A$9,G1)>0,1,0) リストから6個の文字が抜けているときにA1セルからA9セルに色を付けるのでしたら次のようにします。 A1セルからA9セルを選んで「書式」から「条件付き書式」で条件の左の窓では「数式が」にし、右の窓には=SUM(H$1:H$6)<6と入力して、同じ画面の「書式」で「パターン」タブから色を設定してOKします。 また、抜けている文字を具体的に表示させるためには、あるセル、例えばB1セルに次の式を入力すればよいでしょう。 =IF(SUM(H1:H6)<6,"「"&INDIRECT("H"&MATCH(0,H1:H6,0))&"」が抜けています","") 抜けている文字列は初めはたくさんあるわけですがリストで最初の文字列だけが表示されます。この表示が空になればすべての文字列がA列に入力されたことになります。

naginagisa
質問者

お礼

大変遅くなりました。 変更分も含め感謝します。