- ベストアンサー
【Excel365】数字のみの場合に表示させたい
A列に10桁固定の数字のみ入力されていたらC列に「有効」と表示させる関数をご教示ください。 A列は0から始まる数字もあるため文字列です。 行数は数百行あります。 列の挿入はできません。 よろしくお願いします。
- KO1014
- お礼率97% (531/546)
- Excel(エクセル)
- 回答数10
- ありがとう数10
- みんなの回答 (10)
- 専門家の回答
質問者が選んだベストアンサー
回答No.6の訂正です。 No.6の10桁のやつはあたまに0がある時のデータで確認してなかったので間違ってました 10桁限定でしたら =IFERROR(IF(A2="","",IF(ISNUMBER(VALUE(A2)),IF(LEN(A2)=10,"有効",""),"")),"") 10桁以外があった場合の桁数表示あり =IFERROR(IF(A2="","",IF(ISNUMBER(VALUE(A2)),IF(LEN(A2)=10,"有効",LEN(A2)&"桁"&"です"),"")),"")
その他の回答 (9)
- SI299792
- ベストアンサー率47% (643/1351)
365 なら、スピルが使えます。 C2: =IF(ISERROR((A2:A99&"")+0),"","有効") 下へコピペの必要はありません。 99は実データに合わせて変更して下さい。

お礼
ご回答ありがとうございました。
- kkkkkm
- ベストアンサー率64% (1517/2336)
回答No.6の訂正というかなんどいうか =IFERROR(IF(A2="","",IF(VALUE(A2),"有効","")),"") 上記でもいけてますが念のためにISNUMBERを入れておきます(数値かどうか確認してるのが見てわかると思うので) =IFERROR(IF(A2="","",IF(ISNUMBER(VALUE(A2)),"有効","")),"")

お礼
ご回答ありがとうございました。
- kkkkkm
- ベストアンサー率64% (1517/2336)
回答No.1の訂正です。 未入力のセルがあると有効になっていたので =IFERROR(IF(A2="","",IF(VALUE(A2),"有効","")),"") 10桁限定でしたら =IFERROR(IF(A2="","",IF(LEN(VALUE(A2))=10,"有効","")),"") 10桁チェックするのでしたら10桁以外があった場合の桁数表示もあった方がいいかもで =IFERROR(IF(A2="","",IF(LEN(VALUE(A2))=10,"有効",LEN(A2)&"桁"&"です")),"")

お礼
ご回答ありがとうございました。
- NuboChan
- ベストアンサー率47% (718/1520)
求められていませんがVBAなら 標準モジュール用、WorkSheet用です Option Explicit Sub CheckColumnA() Dim lastRow As Long Dim i As Long lastRow = Cells(Rows.Count, "A").End(xlUp).Row For i = 1 To lastRow If Len(Cells(i, "A").Value) = 10 And IsNumeric(Cells(i, "A").Value) Then Cells(i, "C").Value = "有効" End If Next i End Sub Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long If Intersect(Target, Range("A2:A300")) Is Nothing Then Exit Sub Else If Len(Target.Value) = 10 And IsNumeric(Target.Value) Then Target.Offset(0, 2) = "有効" End If End If End Sub

お礼
ご回答ありがとうございました。
- redslove10
- ベストアンサー率37% (263/697)
C2セルに =IF(AND(ISNUMBER(A2*1), LEN(A2)=10), "有効", "") を入力し、C3以降にもコピーしてください。

お礼
ご回答ありがとうございました。 10桁のみに表示させたい時にはこの関数でOKですね。
- sknbsknb2
- ベストアンサー率39% (1028/2606)
C2に =IFERROR(IF(A2=TEXT(VALUE(A2),"0000000000"),"有効",""),"") と入れて、C3から下にコピーしてください。

お礼
ご回答ありがとうございました。 10桁のみに表示させたい時にはこの関数でOKですね。
- imogasi
- ベストアンサー率27% (4736/17065)
データ例 A1:C7 C列は結果 A列の数字だけのデータは、先頭にアポストロフィを付けた。 000369000 有効 0123456789 有効 2222222222 有効 廃番 登録待ち4444444 確認中 9988776655 有効 -- C1セルの関数 =IF(ISNUMBER(VALUE(A1)),"有効","") 下方向に式を複写。 結果 上記C列の通り。 充分な、色んなケースでテストして、反例があれば出してください。

お礼
ご回答ありがとうございました。
- kkkkkm
- ベストアンサー率64% (1517/2336)
C2に =IFERROR(IF(ISNUMBER(VALUE(A2)),"有効",""),"") でいかがですか

お礼
ご回答ありがとうございました。
関連するQ&A
- エクセルで2つの数字を合体させる
お世話になります。 A1に100、B1に1 A2に200、B2に15と各セルに数字が入力されていて それぞれを合体させてC1に10001、C2に20015と5ケタの数字を表示をさせたいのですが、CONCATENATE関数を用いて行った場合、1行目は1001と4ケタになってしまいます。桁をそろえて全てを5ケタにして合体させたいのですが・・・。(但し、B列には1ケタか2ケタの整数しかありません。) こういった場合、どのようにすればよろしいでしょうか? わかりづらい文章ですみませんが、何卒、ご存知の方、ご教授いただきたく、お願いします。
- ベストアンサー
- オフィス系ソフト
- Excel関数
Eccel2003を使用して以下のような入力作業を行っております。 A列~C列のセルに「1~10」いずれかの数字を入力して行きます。 入力パターンは (1)A列だけ入力 (2)A列とB列に入力 (3)A列~C列全てのセルに入力 の3パターンです。 複数の列に数字を入力する場合((2)及び(3))、同じ数字を入力することはありません。 【例】 A B C D 1 5 4 1 2 6 3 1 2 4 2 4 5 ・ ・ ・ このとき、A~C列に一つでも該当の数字(ここでは2と4と5)が入力されていた場合に、 ある文言(30文字くらい)をD列に反映させたいのですが、何か良い関数等ありますでしょうか? ※ 上記例の場合、1,3,4行目のD列に文言を反映 例の4行目のように全ての列に該当の数字を入力することもあります。 ご教示頂きたく何卒宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- EXCEL教えてください
EXCEL初心者です EXCEL2007(12.0.6654 5503)SP2を使用しております もしわかりましたら教えてください A列には1から連続する数字がはいっています ただし任意で途中で1からまた始ります B列には任意の4ケタの数字がはいっています C列には100か101がはいっています B列とC列に数字を入力していくとき A列の1から連続した数字までの間で B列かつC列に入力した数字が重複してる場合 「すでに入力済みです!」とメッセージを表示させたいです たとえば以下の場合 一行目と7行目がB列:1000 C列:100でダブってますが A列をみると1から連続した数字までの間ではないのでこういうときにはメッセージは表示させず 一行目と3行目は「A列が1から連続した数字までの間で」かつ「B列かつC列に入力した数字が重複してる」 のでこういうときにエラーメッセージを表示させたいです A B C 1 1 1000 100 2 2 4001 101 3 3 1000 100 4 1 2002 100 5 2 4000 100 6 3 6001 101 7 4 1000 100 説明がわかりずらかったらすみません 補足しますのでその旨記載お願いします
- ベストアンサー
- オフィス系ソフト
- 列の先頭に入力されている数字(文字)を表示したい
以下のような表があるとします A列 B列 C列 1行 1 2行 5 6 3行 2 4行 7 5行 3 各列の最後の行に以下のような回答を表示させる関数が知りたいです。 A列の一番最初の文字は1 B列の一番最初の文字は5 C列の一番最初の文字は7 分かりづらいかもしれませんがご教示ください
- ベストアンサー
- Visual Basic
- 正規表現を使って行数毎の数字を抽出したいです。
正規表現を使って行数毎の数字を抽出したいです。 -ウェブに表示されている文字列--- 101 100 99 98 ...... -------------------- この表示が1行につき3文字固定であれば以下でできました。 (/(\d{3})/, '<a href="foo/\1">\1</a><br/>')
- ベストアンサー
- Linux系OS
- Excel関数
Eccel2003を使用して以下のような入力作業を行っております。 A列~C列のセルに「1~10」いずれかの数字を入力して行きます。 入力パターンは (1)A列だけ入力 (2)A列とB列に入力 (3)A列~C列全てのセルに入力 の3パターンです。 複数の列に数字を入力する場合((2)及び(3))、同じ数字を入力することはありません。 【例】 A B C D 1 5 4 1 2 6 3 1 2 4 9 1 3 ・ ・ ・ このとき、A~C列に一つでも奇数が入力されていた場合に、 ある文言をD列に反映させたいのですが、何か良い関数等ありますでしょうか? ※ 上記例の場合、1,3,4行目のD列に文言を反映 例の4行目のように全ての列に奇数を入力することもあります。 ご教示頂きたく何卒宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセルで二つのセルにある数字の差の個数を表示したい
エクセルでの質問です。 どう質問したら良いか、うまく伝わるかよくわからないのでわかりづらかったらすみません。 Aの列に「1」Bの列に「~」Cの列に「4」が入力されているとします。 入力されている数字は、通し番号の一部です。 Dの列に、1~4までの数字の個数である「4」を表示させたいと思っています。 1234、と指を折って数えると4になる、それです。 数字の多い方から少ない方を引いて、1を加えるというのは考えたのですが A列のみの入力でC列に入力なしの、D列の結果が「1」という場合もあり それをスマートに表示させる方法は何かないかと模索しております。 質問がわかりにくくてすみません。 A B C D 1 ~ 4 4 7 ~ 1 こんな感じです。 実際は6桁の通し番号で、行も多いです。 計算式を入れて、下行にコピー。で対応したいのですが、 なんともうまくいきません。 ご教授頂けると助かります。
- ベストアンサー
- オフィス系ソフト
- Excelで値と値をくっつけたり、+1する方法を教えてください
添付した画像のような表を作成しています(添付用に加工しています) A列とB列は、手入力します。 A列:2桁の半角英数 B列:3桁の半角英数 C列に入るものは、 11(固定された数字)+A列の値+B列の値+001から始まる連番 ですので、3行目でいうとC3に「11 A1 B22 001」(分かりやすく半角スペースを空けています) 4行目ですとC4に「11C3D44002」 という値をA列、B列に入力をしたら、C列に上記のような10桁の値を 自動で入力されるしたいのですが、関数などで行うことでできないものかと思い質問しました。 現状は、C列も手入力で行っておりまして、 ・最初の2桁は、固定数値 ・A列とB列の値を使用している ・最後の3桁は001からの連番を使用している ※終わり3桁は無条件で001~の連番にしている もし関数などで対応可能でありましたら、どのような数式にすればよいのか ご教示頂けるとありがたく思います。 よろしくお願い致します。
- 締切済み
- オフィス系ソフト
- charを使わずに4桁の数字以外を入力したらエラーを表示したいです
http://oshiete1.goo.ne.jp/qa4515709.html 上記の質問の続きとなります。 C言語で4桁の数字を入力させ、4桁の数字以外が入力されたらエラーを表示し、 4桁の数字が入力されたら、各位の数についていくつかの計算を行いたいです。 回答者の方のアドバイスから、文字列として入力し、字数をstrlenで、各桁の数をisdigitで判別するという方法を教えていただき、 4桁の数字以外が入力されたらエラーを表示することはできましたが、そうすると今度は計算がうまくいかなくなってしまいました。 例えば文字列としてscanf("%s",a);のようにして「1234」という文字列を入力し、これを「1234」という数値として扱うことはできませんか? または、strlen,isdigitを使わずに数値が4桁の整数であるかどうかを判別することはできませんか? もし良い方法をご存知の方いましたら、解説をお願いします。
- ベストアンサー
- C・C++・C#
お礼
ご回答ありがとうございました。 桁数間違いの場合に注意勧告できるので、この関数を適用させていただきます。 大変助かりました。