[[20190315203204]] 『文字列の英字と数字を見分ける方法』(ゆか) ページの最後に飛ぶ

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

 

『文字列の英字と数字を見分ける方法』(ゆか)

該当関数があるなら是非教えて下さい。

『1123456A2J010』
『123456B2_1234』

英字、数字、アンダーバーが混ざったもので、
10桁目が英字の時、
10桁目が数字の時で見分けたいのですが、何か良い関数はありますか?

< 使用 Excel:Excel2010、使用 OS:Windows10 >


IsNumber(Value(Mid(対象セル,10,1)))で見分けられると思います。

Mid関数:省略
Value関数:文字列として与えられた数字を数字として認識する。
IsNumber関数:数字ならばTrueを、数字以外ならばFalseを返す。

です。
(高橋) 2019/03/15(金) 20:50


早速のご回答ありがとうございます。
分かりやすく教えて頂きありがとうございます。
やってみます。
(ゆか) 2019/03/15(金) 21:01

すみません。重ねての質問になります。

A列______________B列____C列
123456A2_J110____11111___○
123456A2_J120____11111___○
123456A2_J120____11112___×
123456A2_J230____22222___○
123456A2_J231____22222___○
123456A2_1230____33333___○
123456A2_1330____33333___○

上記のように
10桁目が英字だったときに、11桁目が同じ数字の時は
隣の列セルが同じ数字になった時は○を返し、同じ数字になっていない時は×を返します。
10桁目が数字の時には11桁目が違う数字でも、
隣の列セルが同じ数字の時は○を返し、同じ数字になっていない時は×を返します。

こんな場合分けを関数でも出来るのでしょうか。

(ゆか) 2019/03/15(金) 21:46


 >上記のように
 >10桁目が英字だったときに、11桁目が同じ数字の時は
 11桁目の数字はどこと比較するのでしょうか?
 10桁目の英字と一致しないのは明らかですし、「隣の列セル」がB列だとしても、
 >11桁目というからには一文字でしょうし、それはどこのことなのでしょうか?

(チオチモリン) 2019/03/15(金) 22:34


言葉足りずで申し訳ありません。

11桁目で比較するのは自身1つ下のセルの11桁目です。

10桁目がJで11桁目が1
下の行で10桁目がJで11桁目が1だったら、
隣のセルの中身が同じか比較する

といったことをやりたいです。
(ゆか) 2019/03/15(金) 22:52


 >隣のセルの中身が同じか比較する
 というのも
 >1つ下のセル
 ですよね。 そうすると ↓ のようになると思いますが、C列の表示と一致しません。

                             10桁目    11桁目      B列
 123456A2_J110    11111 ○   J  英字  1  同数字   同数字
 123456A2_J120    11111 ○   J  英字  1  同数字     異
 123456A2_J120    11112 ×   J  英字  1    異       異
 123456A2_J230    22222 ○   J  英字  2  同数字   同数字
 123456A2_J231    22222 ○   J  英字  2  同数字     異
 123456A2_1230    33333 ○   1  数字  2    異     同数字
 123456A2_1330    33333 ○   1  数字  3    ?       ?

                        cas  10桁目    11桁目      B列
                          1     英字     同数字   同数字   →  ○
                          2      〃        〃       異     →  ×
                          3      〃        異              →  ?
                          4      〃        〃              →  ?
                          5     数字              同数字   →  ○
                          6      〃                 異     →  ×

 case 3 の場合の表示もわかりませんし、
 下の行と比較するなら、最終行は判定できないと思いますけど?
(チオチモリン) 2019/03/16(土) 09:34

チオチモリンさん、返信ありがとうございます。

大変分かりづらいもので申し訳ありません。
左の123456A2は商品名、11111等の列は商品の場所を表しています。
case3の場合は11桁目が違うので、case1と2とは商品が異なります。
case1が同じもので同じ場所にあることを示し、2が同じ商品だけど間違った場所にあることを示し、

case3が上の商品とは違う商品を示していて、場所については下のcase4と同じかを見ています。

case5と6は数字の場合です。

IF関数で表せるのが理想ですが、マクロでもやり方があれば是非教えて欲しいです。

(ゆか) 2019/03/16(土) 16:35


いえ そういう説明ではなくて

10桁目が英字だったときに、11桁目が同じ数字でない時の結果表示は何かということなんですけど?

  _____ _______________ ______ _____
 |_____|_______A_______|___B__|__C__|
 |___3_|123456A2_J110    11111   ○
 |___4_|123456A2_J120    11111   ○
 |___5_|123456A2_J120    11112   ×
 |___6_|123456A2_J230    22222   ○
 |___7_|123456A2_J231    22222   ○
 |___8_|123456A2_1230    33333   ○
 |___9_|123456A2_1330    33333   ○

4行目は case2に相当するので×ではないかと思いますし
5行目は case3に相当すると思いますが ○なのか×なのか説明がないように思います。

ので、ほかの方からもレスがつかないのではないかと思います。

7行目をみると、○になっていますが、10桁目が異なりますので、10桁目も次行との比較もあるように思いますし
9行目が○なのも?です。

ルールが明確で無い以上、数式にしろマクロにしろ組み立てようがないです。

(チオチモリン) 2019/03/16(土) 18:31


 出来上がりから逆算すると・・

 上行または下行のいずれかと合致すれば、「〇」なのじゃないですかねぇ。

  C2セル =IF(IF(IF(B1<>B2,0,IF(COUNT(-MID($A1,10,1))=COUNT(-MID($A2,10,1)),IF(COUNT(-MID($A1,10,1)),1,IF(MID($A1,11,1)=MID($A2,G$1,1),1,0)),0)),1,IF(B2<>B3,0,IF(COUNT(-MID($A2,10,1))=COUNT(-MID($A3,10,1)),IF(COUNT(-MID($A2,10,1)),1,IF(MID($A2,11,1)=MID($A3,G$1,1),1,0)),0))),"○","×")

 下にコピー

 <結果図>
  行  ______A______  __B__  __C__
   1  No             Val    Judge
   2  123456A2_J110  11111  ○   
   3  123456A2_J120  11111  ○   
   4  123456A2_J120  11112  ×   
   5  123456A2_J230  22222  ○   
   6  123456A2_J231  22222  ○   
   7  123456A2_1230  33333  ○   
   8  123456A2_1330  33333  ○    

(半平太) 2019/03/16(土) 21:34


説明ができず申し訳ありません。

半平太さん、
そうです。上のセルと下のセルを比べていずれかと条件合致する時は○を返したいです。
また大変申し訳ないのですが、もう一つ条件があります。
同じNoが無かった時は◎を返したいです。

同じNoがあり、場所が同じ場合は○を、
同じNoがあり、場所が違う場合は×を、
同じNoがない時は◎を返したいです。

9___123456A2_2330_____44444___◎

本当に申し訳ありません。。

(ゆか) 2019/03/16(土) 22:36


 >もう一つ条件があります。 
 >同じNoが無かった時は◎を返したいです。 

 >同じNoがあり、場所が同じ場合は○を、 
 >同じNoがあり、場所が違う場合は×を、 
 >同じNoがない時は◎を返したいです。 

 同じNoとは「A列内で見て」と言うことですか?

 そうだとすると、
   それだけで「もう一つの条件」ですよね?

   説明の後段3行が、いままでと同じ条件なのか分からないんですが・・
  「場所が同じ」の「場所」とは何を指しているんですか?(連続行?、文字位置?)

(半平太) 2019/03/17(日) 07:20


半平太さん

言い方が悪くて本当に申し訳ないです。
場所とは「Val」のことを指していました。

 行  ______A______  __B__  __C__
   1  No             Val    Judge
   2  123456A2_J110  11111  ○      
   3  123456A2_J120  11111  ○   
   4  123456A2_J120  11112  ×   
   5  123456A2_J230  22222  ○   
   6  123456A2_J231  22222  ○   
   7  123456A2_1230  33333  ○   
   8  123456A2_1330  33333  ○
  9  123456A2_2000  44444  ◎

【2と3について】
・2と3行目は10桁目が同じ英字「J」で11桁目が同じ数字「1」ということで同じ商品(No条件Ok)を意味しています。さらに商品置き場が「11111」で同じ場所(Val条件OK)にあるということで「〇」を返しています。
(2は下と、3は上の行とNo,条件OKで、Val条件OkなのでJudgeは〇)

【4について】
・4は3行目と4行目で10桁目が同じ英字「J」で11桁目が同じ数字「1」ということで同じ商品(No条件OK)を意味しています。しかし商品置き場が「「11112」で異なる場所(Val条件NG)にあるので「×」を返します。
4行目と5行目は10桁目が同じ英字「J」で11桁目が違う数字「1と2」なので、違う商品(No,条件NG)を意味します。
(4は上の行3とNo,条件OKだが、Val条件NGなので、Judgeは×)

【5について】
・5は4行目と5行目は10桁目が同じ英字「J」で11桁目が違う数字「1と2」なので、違う商品(No,条件NG)を意味します。
5行目と6行目で10桁目が同じ英字「J」で11桁目が同じ数字「2」なので、同じ商品(No条件Ok)を意味しています。さらに商品置き場が「22222」で同じ場所(Val条件OK)にあるということで「〇」を返しています。
(5は下の行とNo,条件OKで、Val条件OkなのでJudgeは〇)

【6について】
・5行目と6行目で10桁目が同じ英字「J」で11桁目が同じ数字「2」なので、同じ商品(No条件Ok)を意味しています。さらに商品置き場が「22222」で同じ場所(Val条件OK)にあるということで「〇」を返しています。
・6と7行目は10桁目が「Jと1」で違うので違う商品(No,条件NG)
(6は上の行とNo,条件OKで、Val条件OkなのでJudgeは〇)

【7について】
・6と7行目は10桁目が「Jと1」で違うので違う商品(No,条件NG)
・7行目と8行目は10桁目が同じ数字「1」なので同じ商品(No条件Ok)を意味しています。さらに商品置き場が「33333」で同じ場所(Val条件OK)にあるということで「〇」を返しています。
(7は下の行とNo,条件OKで、Val条件OkなのでJudgeは〇)

【8について】
・7行目と8行目は10桁目が同じ数字「1」なので同じ商品(No条件Ok)を意味しています。さらに商品置き場が「33333」で同じ場所(Val条件OK)にあるということで「〇」を返しています。
・8と9は10桁目が違う数字「1と2」で違う商品(No,条件NG)
(8は8上の行とNo,条件OKで、Val条件OkなのでJudgeは〇)

【9について】
・8と9は10桁目が違う数字「1と2」で違う商品(No,条件NG)・8と9は10桁目が違う数字「1と2」で違う商品(No,条件NG)
10行目がないので上下ともNo,条件NGで同じ商品がないので、Judgeは◎と

この説明で伝わるでしょうか。

また、私からも質問なのですが、
C2セル =IF(IF(IF(B1<>B2,0,IF(COUNT(-MID($A1,10,1))=COUNT(-MID($A2,10,1)),IF(COUNT(-MID($A1,10,1)),1,IF(MID($A1,11,1)=MID($A2,G$1,1),1,0)),0)),1,IF(B2<>B3,0,IF(COUNT(-MID($A2,10,1))=COUNT(-MID($A3,10,1)),IF(COUNT(-MID($A2,10,1)),1,IF(MID($A2,11,1)=MID($A3,G$1,1),1,0)),0))),"○","×")

G$1が出てくるんですが、こちらは11のことですか?

(ゆか) 2019/03/17(日) 09:22


 >G$1が出てくるんですが、こちらは11のことですか? 

 すみません、11のことです。m(__)m

 詳しくご説明頂きましたが、
 この条件はまだ生きていますよね?
  ↓
 >10桁目が英字だったときに、11桁目が同じ数字の時は 
 >隣の列セルが同じ数字になった時は○を返し、同じ数字になっていない時は×を返します。 

 >10桁目が数字の時には11桁目が違う数字でも、 
 >隣の列セルが同じ数字の時は○を返し、同じ数字になっていない時は×を返します。 

 生きているとして・・

 「場合分け」が複雑なので、作業列を使います。(一つの数式にまとめたい時は、そちらでやってください)

 (1) E2セル =MID(A2,10,1)
 (2) F2セル =MID(A2,11,1)
 (3) G2セル =AND(E2=E3,OR(COUNT(-E2),F2=F3))
 (4) H2セル =AND(E1=E2,OR(COUNT(-E1),F1=F2))
 (5) I2セル =B2=B3
 (6) J2セル =B1=B2

 (7) C2セル =IF(OR(G2,H2),IF(OR(AND(G2,I2),AND(H2,J2)),"○","×"),"◎")

 <結果図>
  行 ______A______ ___B___ __C__ _D_ ___E___ ___F___ _______G_______ _______H_______ _______I_______ _______J_______
   1 No            置き場  Judge     10桁目  11桁目  下と同一商品か  上と同一商品か  下と同一場所か  上と同一場所か 
   2 123456A2_J110  11111   ○         J        1    TRUE            FALSE           TRUE            FALSE          
   3 123456A2_J120  11111   ○         J        1    TRUE            TRUE            FALSE           TRUE           
   4 123456A2_J120  11112   ×         J        1    FALSE           TRUE            FALSE           FALSE          
   5 123456A2_J230  22222   ○         J        2    TRUE            FALSE           TRUE            FALSE          
   6 123456A2_J231  22222   ○         J        2    FALSE           TRUE            FALSE           TRUE           
   7 123456A2_1230  33333   ○         1        2    TRUE            FALSE           TRUE            FALSE          
   8 123456A2_1330  33333   ○         1        3    FALSE           TRUE            FALSE           TRUE           
   9 123456A2_2000  44444   ◎         2        0    FALSE           FALSE           FALSE           FALSE          

(半平太) 2019/03/17(日) 10:36


半平太さん

返信遅くなってごめんなさい。

ありがとうございました‼‼
今日私も確認して、出来ました‼凄いです。作業列を作って頂いたことで私にも理解出来ました。
説明もろくに出来ない中、根気強く教えて頂きありがとうございました。本当に助かりました。
(ゆか) 2019/03/18(月) 22:45


コメント返信:

[ 一覧(最新更新順) ]


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