[[20070728180616]] 『数字の複数判定』(TAD) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『数字の複数判定』(TAD)

 
 A  B  C  D  E  L  M  N  O   P

1  0  1  2   3  4  1  1  1  2  1112

2  ● ○

3

MID関数でP1からM1〜O1セルに1桁づつ分割して、L1セルに1、M1セルに1、N1セルに1、O1セルに2に分割後、A1の0を筆頭にE1の4迄更に分割して判別させる事が出来る関数が分かりません。ちなみにA1の0からE1の4迄固定数字で変更はしない状態です。
仮にP1が1034だとL1に1、M2に0、N2に3、O2に4と表示させた後、A2に○、B2にも○D2にも○、E2にも○と表示させたいです。基本は1個の数字には○、2個ダブル場合には◎、3個ダブル数字には●を全く当てはまらない数字には空白で表示させたいです。恐らくIF、AND、ORネストしてやれば出来ると思うのですが中々うまく出来ません。

仮にB1に入れた式はこんな感じです。
=IF(AND(OR($B$1=L3,$B$1=M3,$B$1=N3,$B$1=O3),OR(AND(L3=M3,L3=N3),AND(L3=M3,L3=O3),AND(L3=N3,L3=O3),AND(M3=N3,N3=O3))),"●",IF(AND(OR($B$1=L3,$B$1=M3,$B$1=N3,$B$1=O3),OR(L3=M3,L3=N3,L3=O3,M3=N3,M3=O3,N3=O3)),"◎",IF(OR($B$1=L3,$B$1=M3,$B$1=N3,$B$1=O3),"○","")))

まだまだ初心者で関数の使い方も間違っていると思いますが先輩方、助けて頂けないでしょうか?よろしく御願いします。


 こんな感じでは如何でしょう?
 
 L1 =MID(TEXT($P$1,"0000"),COLUMN(A1),1)
 O1 までコピペ
 A2 =MID(" ○◎●",5-LEN(SUBSTITUTE($P$1,A$1,"")),1)
 E2 までコピペ
 
 >恐らくIF、AND、ORネストしてやれば出来ると思うのですが中々うまく出来ません。
 今回は、IF・AND・OR関数は使用しないものを考えましたb
 
 (キリキ)(〃⌒o⌒)b

キリキ様ありがとうございました。IF・AND・ORが無くても出来るなんてマジ感動しました。
今まで悩んでいたのが嘘みたいです。有難う御座いました。
とても勉強になりました。

もうひとつ御願いしても宜しいでしょうか?
=MID(" ○◎●",5-LEN(SUBSTITUTE($P$1,A$1,"")),1)の関数式ですが、
5-LENの5とはどのような事を示しているのでしょうか?
よろしく御願い致します。


 ごめんなさい^^;
 
 もう見てないかもしれませんが、、、
 訂正させてください・・・
 4桁以外が発生することも考慮して。。。
 
 L1 =MID(RIGHT(REPT(" ",3)&$P$1,4),COLUMN(A1),1)
 O1 までコピペ
 A2 =MID(" ○◎●",5-LEN(SUBSTITUTE(RIGHT(REPT(" ",3)&$P$1,4),A$1,)),1)
 E2 までコピペ
 
 以上で如何でしょう?
 
 って書いててたら、衝突しました☆
 >=MID(" ○◎●",5-LEN(SUBSTITUTE($P$1,A$1,"")),1)の関数式ですが、 5-LENの5とはどのような事を示しているのでしょうか?
 P1 の、最大文字数に「1」を足したものです。
 LEN(SUBSTITUTE($P$1,A$1,""))
 この SUBSTITUTE関数で、P1 に含まれている A1 の数字を消しています。
 そしてそれを LEN関数で何文字あるか文字数を出しています。
 仮に、同じ数字が無いとすると、全部残るため「4」文字になりますよね?
 そうすると、最大文字数の「4」から上記の「4」を引くと「0」になってしまいます。
 今回のは、MID関数を使用し文字を返すものを考えましたので、何文字目に相当するその部分が
 「0」では、困るのです。。。
 よって、帳尻合わせのため、最大文字数+1 で「5」としています。
 別案として、4-LEN(SUBSTITUTE($P$1,A$1,""))+1 としても大丈夫ですねb
 
 こんな説明で、おわかりいただけましたでしょうか?
 σ(^o^;)は、説明が苦手なもので・・・
 
 (キリキ)(〃⌒o⌒)b

いえいえとても参考になります。
4桁以外も考えて頂きまして有難うございます。
エクセルの本には参考になるネスト関数が無くほとほと困り果てていましたので、大いに勉強させて頂きました。とても参考になりました。


 L1 =MID(TEXT($P$1,"0000"),COLUMN(A1),1)
 O1 までコピペ
 A2 =CHOOSE(COUNTIF($L1:$O1,A$1)+1,"","○","◎","●")
 E2 までコピペ
   (KKKKK)

KKKKK様有難う御座いました。
いろんな関数で出来るのかと分かりましたらとても関数は楽しいものと改めて思いました。
これまた勉強になりました。CHOOSE関数だけは使用した事が無かったので勉強になります。
本当に有難う御座いました。


すみません!早速使用してみたのですが、
キリキ様のご解答頂きました=MID(" ○◎●",5-LEN(SUBSTITUTE($P$1,A$1,"")),1)
ですが、P1が空白の場合はA2〜O2迄、4が表示されます。意味は分かるのですが、IF関数(=IF(P1="","",)を使用すれば全く何も表示されなくなります。
ご面倒ですが、再度助けて下さい〜
よろしく御願いします

 ん?
 >ですが、P1が空白の場合はA2〜O2迄、4が表示されます。
 A2〜O2ですか???
 4? なぜ数字が出ます?
 どのセルに、どの数式が入っていますか?
 最初のように、表を提示してくれます?

 ←ここに、半角スペースを入れれば、改行が効くようになりますので、表をアップするのに便利ですb
 
 (キリキ)(〃⌒o⌒)b

追加でごめんなさい・・・
A2〜E2迄、条件付書式で、○が表示されると黄色、◎が表示されると緑色、●が表示されると赤色といった様に塗りつぶしの条件付書式にしているのですが、キリキ様、KKKKK様が答えて頂きました計算式を使用しますと正常に●は表示されるものの・・・条件付書式が反応しません。
一体どうして・・・?
何回も答えて頂きまして申し訳有りませんがご指導御願いします。

 ←ここに半角スペースを入れると見やすくなります。

入れないとこんな感じ

 入れるとこんな感じ
 
 条件付書式の設定方法はどうやっていますか?
 数式であれば
 ="○"
 このような設定です
 
 (キリキ)(〃⌒o⌒)b

すみません・・・キリキ様、教えて頂きました計算式を参考にして実際製作している内容に合わせて使用したものの出来なかった為に問題が生じたみたいです。
あの〜また1からなりますがご指導御願い致します。

    A B  C  D  E  F  G  H  I  J  K 

1  0  1  2  3  4  5  6  7  8  9         

2    4th                    1111

 A1〜J1に入っている0〜9の数字は固定です。 K2に1111と言う4桁の数字を入れた場合、
B2には4thと表示し、0123で有ればA2に1、B2にも1、C2にも1、D2にも1と表示されるようにしたいです。
 K1に同数字2個だぶる数字には2、3個だぶる数字には3と表示、4個だぶる数字には4th。
 1個の場合には1、0個の場合には空白(無表示)
  またK2が空白の場合にはA2〜J2迄は空白で。
 また条件付書式で、A2〜J2迄、セルの値が等しいを選択しています。
2が表示された場合には黄色、3が表示された場合には緑、4thが表示されたら赤と言う風に設定しております。
数式で ="2"が黄色でも表示可能みたいですネ・・・


 =INDEX({"1","2","3","4th"},SUM((MID(K2,ROW(A1:A4),1)="1")*1))
ctrl+shift+enter で確定    (KKKKK)


 こんな感じではいかがでしょう?
 
 A2 =SUBSTITUTE(MID(" 1234",SUM((--MID($K$2,{1,2,3,4},1)=A$1)*{1,1,1,1})+1,1),4,"4th")
 J2 までコピー
 
 (キリキ)(〃⌒o⌒)b

 キリキ様ご指導頂きました内容で十分なのですが・・・質問があります・・

 1)K2に0000と表示させたい場合はK2の書式を文字列してから0000と入力するとA2には4thと表示されますが,
  この状態で0000を取り消しにするとA2〜J2に入れている式がエラー値(#VALUE!)が表示されます。
  K2を文字列にしないで、0123と入力すると表示は0を認識せずに123となる為、同様にエラーが発生します。
  最初の時に例をもう少し例を挙げれば何度も教えて頂く事は無かったと思いますがこちらの不手際で申し訳有りません。
  なにか良い案は有るでしょうか?再度ご指導願います。

 2)((--MID の--はどういう意味なのでしょうか?未だかつて計算式に--を使用した事が無いので・・教えて下さい。


 コレでは如何でしょう?
 
 A2 =IF($K$2="","",SUBSTITUTE(MID(" 1234",SUM((--MID(TEXT($K$2,"0000"),{1,2,3,4},1)=A$1)*{1,1,1,1})+1,1),4,"4th"))
 以下コピー
 
 「--」はこちらを参考にしてください。
[[20040530061813]]『「--」と「!」の意味?』(masabou5)
 
 (キリキ)(〃⌒o⌒)b


 完璧!!!有難う御座います!!!
 あの〜度々で申し訳無いのですが・・・最後に教えて下さい!
 A2〜J2で条件付書式の設定で2だと黄色、3だと緑、4thだと赤の塗りつぶし設定は数式でどのように設定すればよいのでしょうか?
 ○とかだったら文字列なので"○"とすれば  設定出来るけれど今回は数字なので設定が分かりません。
 一体どうすれば良いのでしょうか?非常に申し訳なく思っていますが、最後に教えて下さい。


 文字と数値の違いはわかりますか?
 
 例えば、、、
 数値の「2」は → 2
 ですね?
 文字の「2」は → "2"
 となります。
 
 ヒントになりませんか?
 (キリキ)(〃⌒o⌒)b

 すみません・・・
 キリキ様の言っている意味は理解出来るのですが・・・
 数式で選択して =2にしても色が変わりませんし・・・=VALUE(2)にしても・・駄目です。
 =A2:J2=2にしてもおかしいし、色々挑戦してみましたが全く進みません。
 何が悪いのか・・分からない、もう少しヒント頂けませんか?
 宜しく御願い致します。

 はいなb
 
 >数式で選択して =2にしても色が変わりませんし・・・
 それは、どのセルで設定しました?
 同じことですが、どのセルがアクティブでしたか?
 
 ライブラリの
【条件付き書式 Win】
http://www.excel.studio-kazu.jp/lib/e2qw/e2qw.html
 
 こちらを参考に考えて見ましょうb
 (キリキ)(〃⌒o⌒)b

 数式でA2:J2=2にしましたが、色が変更されません!
 せっかく【条件付書式】を教えて頂きましたが、意味は全て理解出来るのですが、
A2〜J2迄全てのセルに該当する数字(1〜3)を塗りつぶししたいのですが出来ません。

数式にしますと$A$2:$J$2の絶対参照になりますが、A3行以降も条件付書式で設定しますので絶対参照をはずしております。
もう少しお知恵を頂けませんか?
宜しくお願い致します。


 「数式が」「=2」としていると何を入力しても(未入力でも)黄色になりませんか?
「セルの値が」「次の値に等しい」「2」では?
(みやほりん)(-_∂)b

 みやほりんさんが回答くださっていますが
 方法としては、下記のようになると思います。
 
 「セルの値が」「次の値に等しい」「="2"」
 または、
 「数式が」「=A2="2"」
 
 数字の「2」は「=2」や「=A2=2」でいいのですが、文字の「2」は上記のようになりますb
 
 (キリキ)(〃⌒o⌒)b

 みやほりん様、キリキ様、ようやく出来ました。(="2"で出来ました)
一瞬自分の使っているエクセルが悪いのでは・・・(何回やってもうまく行かなかったので・・・)と思いました。
本当に有難う御座います。


回答を答えて頂いてから、この計算式「=IF($K$2="","",SUBSTITUTE(MID(" 1234",SUM((--MID(TEXT($K$2,"0000"),{1,2,3,4},1)=A$1)*{1,1,1,1})+1,1),4,"4th"))

現在迄使用しているのですが、A列〜O列の縦列をSUBTOTALで合計しているのですが、上記の式でVALUEを追加しますと、エラーが表示されます。

関数の前にVALUE以外で、SUBTOTALで合計されるにはどうすれば良いでしょうか?
教えて頂きました関数式が複雑?になっているため、分かりません。

もう一度、ご教授願います。


 >A列〜O列の縦列をSUBTOTALで合計しているのですが
 縦計のことでしょうか?
 
 こんな感じでしょうか?
 A列の出したいところに
 =SUM(IF(ISERR(--LEFT(A2:A10)),"",--LEFT(A2:A10)))
 ↑配列数式ですので、Ctrl + Shifr + Enter で確定
 { 数式 }となればOK
 ※範囲は適当ですので、ご自身の表に合わせて調整してください。
 
 (キリキ)(〃⌒o⌒)b 

キリキ様ありがとうございます
一度やってみます


 すみません・・・キリキ様
 言葉足らずで問題が生じました。
 確かに再度教えて頂きました関数式で答えは出るのですが・・・
 縦行が2000行位有りまして、オートフィルタを使用して縦列を選択して合計しています。
 私の説明不足で・・・オートフィルタを使用して、縦列を合計計算できるような関数式って有るのでしょうか?すみません。


 ごめんなさい。。。
 忙しくて、深く考える時間が無いのですが・・・
 
 集計が目的であれば、
 「4th」等の文字列にするのではなく数字にしちゃえばいいのではないでしょうか?
 そのほうが管理しやすいでしょう。
 
 最初の関数を
 A2 =LEN($K2)-LEN(SUBSTITUTE($K2,A$1,))
 必要範囲までコピー
 
 「0」が邪魔なら、
 ツール → オプション 
 【表示】タブの □ゼロ値 のチェックを外す
 で「0」が空欄になります。
 
 そうすれば、SUBTOTAL関数で簡単にできるでしょ?
 
 他には、横に作業列を作って、数値化したものの表を用意するのも手かもしれませんねb
 
 (キリキ)(〃⌒o⌒)b

 無理やりですが考えてみましたb
 
 2000行との事ですので、、、
 A2001 =SUMPRODUCT((SUBTOTAL(3,INDIRECT(LEFT(ADDRESS(1,COLUMN(),4))&ROW(2:2000))))*((A2:A2000={"1","2","3","4th"})*{1,2,3,4}))
 J2001 まで、コピー
 
 ※データの量によっては再計算に時間がかかったり、固まったりする可能性ありw
  別データで保存してからお試しください。
 
 (キリキ)(〃⌒o⌒)b

 キリキ様
 有難う御座いました。
 =LEN($K2)-LEN(SUBSTITUTE($K2,A$1,))を早速使用しました所、ズバリ思った通りの答えが出来ました。


 あ・・・
 
 すいません、上記数式ではおかしな結果が返ってきます・・・
 
 =4-LEN(SUBSTITUTE(TEXT($K2,"0000"),A$1,))
 こちらに差し替えてくださいb
 
 (キリキ)(〃⌒o⌒)b

 L1 
=MOD(INT($P1/10^(4-COLUMN(A1))),10)
A2
=INDEX({"","A","B","C"},COUNTIF($L$1:$O$1,A1)+1)
(偏屈)

 偏屈さん、ご苦労様です。
 
 上記数式は最初のものへの回答ということでよろしいですよね?
 途中で、表題からかなり離れた質問に変わっています。
 他の方が見たときに混乱するといけないので、一応このように書き込ませていただきました。
 
 (キリキ)(〃⌒o⌒)b 

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.