advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 19614 for 20�����������������������... (0.004 sec.)
[[20110805164431]]
#score: 2682
@digest: 16c1730d807f8f51760fc9531232840d
@id: 55469
@mdate: 2011-08-07T13:10:17Z
@size: 4562
@type: text/plain
#keywords: isnumchk (51665), ク範 (19603), numanddotcheck (15241), numarr (14996), 下対 (11665), ー") (9081), 囲), (4572), substitute (4058), ピリ (3810), オド (3651), rept (2389), リオ (2004), interior (1548), 合エ (1429), ceiling (1428), エラ (1381), ラー (1288), colorindex (1273), ー", (1191), チェ (1114), 応。 (1021), ェッ (1009), trim (956), right (948), len (887), function (829), スッ (765), indirect (745), gobgob (743), 定( (723), split (677), ubound (646)
『ピリオドで区切られた範囲のチェック』(素人)
1〜20までの数値以外や「..」「最後がピリオドで終わってない」などがあった場合エラーとしたいのですが 1.2.3. → OK 10.11 → エラー 1.23.3. → エラー 4.15..19. → エラー 教えて下さい。 ---- Alt+F11を押して、挿入-->標準モジュールを選択。 出てきた画面に下記コードをコピペして閉じる。 ワークシート上で、=IsNumChk(A1) と入力します。 OKの場合はTrue、エラーの場合はFalseが返ります。 (ROUGE) Function IsNumChk(txt As String) As Boolean Dim x, i As Long x = Split(txt, ".") If x(UBound(x)) = Empty Then IsNumChk = True For i = 0 To UBound(x) - 1 Select Case x(i) Case 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 Case Else IsNumChk = False End Select Next End If End Function ---- 無理やり数式で。 A1に元の値があるとして =IF(AND((1<=(0&TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",100)),ROW(INDIRECT("1:"&(LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))*100-99,100)))*1) *(20>=(0&TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",100)),ROW(INDIRECT("1:"&(LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))*100-99,100)))*1), RIGHT(A1,1)="."),"OK","エラー") って入力してShiftキーとCtrlキーを押しながらEnterキーを押してみて。 式の両側が{}が囲まれたらOKだよ。 追記 Excelが2007以降だったら =IF(AND((INT(((0&TRIM(MID(SUBSTITUTE(A1,".",REPT(" ",100)),ROW(INDIRECT("1:"&(LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))*100-99,100)))-1)/20)=0) ,RIGHT(A1,1)="."),"OK","エラー") ってしてみて。 (春日野馨) ---- ROUGEさんのコードとほぼ同じだけどこんなのでも。 Function IsNumChk(txt As String) As Boolean Dim x As Variant, i As Long x = Split(txt, ".") If x(UBound(x)) = Empty Then For i = 0 To UBound(x) - 1 IsNumChk = False If Not IsNumeric(x(i)) Then Exit For If x(i) < 1 Or x(i) > 20 Then Exit For IsNumChk = True Next End If End Function (ぶらっと) ---- データ数は20個までとする。 =IF((MIN(CEILING(MID(SUBSTITUTE(TRIM(A1)&REPT("020.",20),".","0"&REPT(" ",100)),ROW($A$1:$A$20)*100-99,100),200))=200)*(MAX(CEILING(MID(SUBSTITUTE(TRIM(A1)&REPT("020.",20),".","0"&REPT(" ",100)),ROW($A$1:$A$20)*100-99,100),200))=200)*(RIGHT(A1)="."),"OK","エラー") {Ctrl]+{Shift]+{Enter]で確定 (NB) ---- =IF(COUNTIF(A1,"*..*"),"エラー",IF(AND(ISERR(FIND(".0","."&A1)),MAX(INDEX(MID(SUBSTITUTE(A1&20&REPT(".20",40),".",REPT(" ",100)),(ROW($1:$40)-1)*50+1,100)*1,))<=20),"OK","エラー")) (GobGob) 110806 13:23 修正 ---- やり方いろいろということで、イベントでチェックする案です。 下記をシートモジュールにおいて、「チェック範囲」で定義した範囲範囲でデータを 入力してみてください。 既に入力してある内容をチェックしたい場合は、チェック範囲のセルをコピーして、 そのまま貼り付けてみてください。 Private Sub Worksheet_Change(ByVal Target As Range) Const チェック範囲 = "D2:D1000" '★★★ ここは実際に合わせて変更してください。 If Intersect(Range(チェック範囲), Target) Is Nothing Then Exit Sub Dim r As Range For Each r In Intersect(Range(チェック範囲), Target) NumAndDotCheck r Next End Sub Private Sub NumAndDotCheck(r As Range) r.Interior.ColorIndex = xlNone If r.Value = "" Then Exit Sub Dim numArr numArr = Split(r.Value & "20", ".") For Each n In numArr If n = "" Then r.Interior.ColorIndex = 3 Exit Sub End If If CStr(CInt(n)) <> CStr(n) Then r.Interior.ColorIndex = 3 Exit Sub End If If CInt(n) < 1 Or CInt(n) > 20 Then r.Interior.ColorIndex = 3 Exit Sub End If Next End Sub (Mook) ---- =IF(AND(COUNTIF(A1,"*..*")=0,RIGHT(A1)=".",SUMPRODUCT(COUNTIF(A1,"*"&ROW(A21:A10000)&"*"))=0),"OK","エラー") (NB9 ---- NBさんの案が簡単だね。 0以下対応。 =IF(AND(RIGHT(A1)=".",COUNT(INDEX(FIND("."&ROW($1:$20)&".","."&A1&"."),))=LEN(A1)-LEN(SUBSTITUTE(A1,".",))),"OK","エラー") (GobGob) ---- こっちのほうが解りやすいしスッキリかもね。 =IF(LEN(A1)=SUMPRODUCT(ISNUMBER(FIND("."&ROW($1:$20)&".","."&A1&"."))*(LEN(ROW($1:$20))+1)),"OK","エラー") (GobGob) ---- 1.2.2 2.2.3 1.2.3.4.5.5.5.5. 同じ数字が並ぶとNGだね。。。 最終案 =IF(SUMPRODUCT(LEN(A1)-LEN(SUBSTITUTE((SUBSTITUTE(SUBSTITUTE("@"&A1,".",".@"),"@"&ROW($1:$20)&".",)),"@",)))=LEN(A1),"OK","エラー") ※0以下対応。 ※ピリオド以外の文字でもエラー。 (GobGob) ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201108/20110805164431.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 96982 documents and 607778 words.

訪問者:カウンタValid HTML 4.01 Transitional