advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 19645 for 20�����������������������... (0.004 sec.)
[[20151030133514]]
#score: 2682
@digest: 8cb9f56ce56fb6c81f2d06536ffb9ff1
@id: 69208
@mdate: 2015-10-30T14:47:49Z
@size: 9161
@type: text/plain
#keywords: 目→ (35381), 否", (28278), 合") (14877), 否」 (14193), 「15 (13669), 「否 (12797), 以内 (8007), 」以 (7370), 」〜 (6445), 〜「 (6099), の差 (5995), 「4 (5842), 差が (5239), で値 (4777), 定() (4746), 「20 (4699), 下行 (4254), 最下 (4114), 判定 (3577), 行目 (3066), 間で (2963), 「合 (2745), (β (2695), 2015 (2042), の間 (1876), 金) (1809), 小値 (1713), 値の (1686), 目か (1671), worksheetfunction (1430), 以上 (1327), 最小 (1258)
『検索範囲内で5個のデータづつ判定させたいです。』(ちぃさん)
お世話になります。 検索範囲内のデータを5個のデータで範囲外があれば「否」と表示させたいのですが可能でしょうか? 今はB列内のデーター全てで「合否」表示がでるのですが、B列のデータ内で 5個のデータで「15」〜「20」以外の数値があれば「否」と表示させたいのです。 最下行の位置は特定できない状態ですがデータの始まりは「B1」となっていまして、データのある最下行までは空白はございません。 5個のデータづつというのはデーターが「B1」からありますので 「B1」から「B5」までで「15」〜「20」以外の数値があれば「否」 「B2」から「B6」までで「15」〜「20」以外の数値があれば「否」 「B3」から「B7」までで「15」〜「20」以外の数値があれば「否」 ・ ・ このような感じでデータの 最下行までで 「15」〜「20」以外の数値がなければ「合」と表示させたいのです。 全く足りていなのですが現在は =IF(AND(MIN(B:B)>=15,MAX(B:B)<=20),"合","否") としています。 式をどのようにすればよいでしょうか。 どうぞ宜しくお願い致します。 < 使用 Excel:Excel2003、使用 OS:Windows7 > ---- C1 : =IF(OR(MIN(B1:B5)<15,MAX(B1:B5)>20),"否","合") とか? (β) 2015/10/30(金) 14:10 ---- (β)さん ありがとうございます。 お世話になります。 本当にすみません。 質問内容が間違っていました。 sheet1 ____A____ ____B____ 1 16 2 16 3 17 4 16 5 15 6 17 7 17 8 16 9 17 . . . . 500 18 sheet2 ____A____ ____B____ 1 16 2 16 3 17 4 16 5 15 6 20 7 15 8 16 9 17 . . . . 500 18 最下行が特定できなので、仮にサンプルを最下行が500とします。 B列にある最下行までのデータが5個づつで区切った時に「15」〜「20」の間で値の差が「4」以内であればB列は「合」としたいです。 サンプルsheet1でしたら「合」 サンプルsheet2でしたら「否」 としたいです。 本当に申し訳ございません。 可能でしょうか? どうぞ宜しくお願いいたします。 (ちぃさん) 2015/10/30(金) 15:20 ---- 値の差 というのは、何と何の差でしょうか? アップされたサンプルで説明願います。 また、B1〜B5、B2〜B6、B3〜B7、・・・ というのはなくなったのですか? まだ、要件として存在するのですか? (β) 2015/10/30(金) 15:48 ---- (β)さん ありがとございます。 説明不足で申し訳ありません。 サンプルで500行までデータがあるとします。 B1〜B5、B2〜B6、B3〜B7は >B列にある最下行までのデータが5個づつで区切った時に「15」〜「20」の間で値の差が「4」以内であればB列は「合」としたいです。 この部分になります。 sheet1 ____A____ ____B____ 1 16 2 16 3 17 4 16 5 15 6 17 7 17 8 16 9 17 . . . . 500 18 こちらは 1行目から5行目→「15」〜「20」の間で値の差が「4」以内 2行目から6行目→「15」〜「20」の間で値の差が「4」以内 3行目から7行目→「15」〜「20」の間で値の差が「4」以内 4行目から8行目→「15」〜「20」の間で値の差が「4」以内 5行目から9行目→「15」〜「20」の間で値の差が「4」以内 . . . 〜行目から500行目→「15」〜「20」の間で値の差が「4」以内 判定は「合」 sheet2 ____A____ ____B____ 1 16 2 16 3 17 4 16 5 15 6 20 7 15 8 16 9 17 . . . . 500 18 こちらは 1行目から5行目→「15」〜「20」の間で値の差が「4」以内 2行目から6行目→「15」〜「20」の間で値の差が「4」以上 3行目から7行目→「15」〜「20」の間で値の差が「4」以上 4行目から8行目→「15」〜「20」の間で値の差が「4」以上 5行目から9行目→「15」〜「20」の間で値の差が「4」以上 . . . 〜行目から500行目→「15」〜「20」の間で値の差が「4」以内 2行目から6行目→「15」〜「20」の間で値の差が「4」以上 3行目から7行目→「15」〜「20」の間で値の差が「4」以上 4行目から8行目→「15」〜「20」の間で値の差が「4」以上 5行目から9行目→「15」〜「20」の間で値の差が「4」以上 が「4」以上なので判定は「否」 このような感じで判定したのですが。 以上の説明でわかりにくい部分はありますでしょうか。 どうぞ宜しくお願いいたします。 (ちぃさん) 2015/10/30(金) 16:10 ---- 値の差 が 「何」と「何」の値の差なのかが、まだ説明からはわかりません。 想像で。 Sheet2 の B1〜B5 でいうと 16,16,17,16,15 この 5つのなかの最小値 15 と 最大値 17 との差は 2。なので4以内。 SHeet2 の B2〜B6 でいうと 16,17,16,15,20 この 5つのなかの最小値 15 と 最大値 20 との差は 5。なので4超。 これを、以降も、1行ずつ下にみていって、そこから始まる5つのセルの数値がどうかを判定し、 すべての5つのブロックの判定が 4以内なら 合、1つでも 4超があれば 否。 この全体に対する判定を1つだけ C1 に記載。 そういうことですか? また、5つの数字の中で 14以下、あるいは 21以上のものがあれば、そのブロックは NGですか? たとえば 21,21,21,21,21 だった時。最大値と最小値の差は 0 ですが。 (β) 2015/10/30(金) 16:58 ---- (β) さん ありがとうございます。 説明がうまくできておらずすみません。 (β) さんが想像しているままです。 可能でしょうか? (ちぃさん) 2015/10/30(金) 18:06 ---- 仕様は理解しました。 ただ、βは、交通整理の意味で、確認をお願いしてきましたが、関数音痴ですので ご期待にはそえそうもありません。VBAでよければお手伝いできますが。 せいぜい、 D列を作業列として D1 : =IF(AND(MIN(B1:B5)>=15,MAX(B1:B5)<=20,MAX(B1:B5)-MIN(B1:B5)<=4),"","NG") これを、ずらっと下にフィルコピーしておいて、 C1 : =IF(COUNTA(D:D),"否","合") でも、これでは、最後の4行、対象領域に空白せるがあって、そこは下限の 15 を下回りますので NGになり、結果として、C1 は常に 否 になってしまいます。 専門家さんからの回答をお待ちください。 (β) 2015/10/30(金) 19:59 ---- とりあえず専門家さんからの回答がでるまでのつなぎでVBA。 20:19 UDFスタイルに変更。 C1 に =判定() と入れてください。 Function 判定() As String Dim c As Range Dim r As Range Dim ng As Boolean Dim mx As Long Application.Volatile Set r = Range("B1", Range("B" & Rows.Count).End(xlUp)) mx = r.Cells(r.Count).Row For Each c In r If c.Value < 15 Or c.Value > 20 Then ng = True Exit For Else With c.Resize(WorksheetFunction.Min(mx - c.Row + 1, 5)) If WorksheetFunction.Max(.Cells) - WorksheetFunction.Min(.Cells) > 4 Then ng = True Exit For End If End With End If Next 判定 = IIf(ng, "否", "合") End Function (β) 2015/10/30(金) 20:13 ---- (β) さん ありがとうございます。 これはシートモジュールでいいのでしょうか? シートモジュールにコピペし、 C1 に =判定() と入力すると 関数名が正しくないエラーが(#NAME?)と出ます。 無知で申し訳ありません。 どのようにご教授いただいたコードを使えばよいでしょうか。 どうか宜しくお願い致します。 (ちぃさん) 2015/10/30(金) 20:35 ---- 標準モジュールに書いてください。 (β) 2015/10/30(金) 20:39 ---- 関数音痴らしく、ちょっと勘違いしていたところがあります。 (β) 2015/10/30(金) 19:59 でアップした作業列方式で、一応結果が出ますね。 ただし、式は、 D1 : =IF(AND(MIN(B1:B5)>=15,MAX(B1:B5)<=20,MAX(B1:B5)-MIN(B1:B5)<=4),0,1) これを D500までフィルコピーしておいて C1 : =IF(SUM(D:D)>0,"否","合") アップしたVBAコードも勘違い内包していますが、これは、影響がないのでこのままでも。 (β) 2015/10/30(金) 20:59 ---- (β)さん ありがとうございます。 いけました。 マクロも正しくうごきました。 マクロの方、仮に検索列を増やす場合はどこに追加すればいいでしょうか。 現在はB列のみ検索していますが、H列、J列と離れた場所の場合など。 後出し的で申し訳ありません。 もしよければ今一度お願いできないでしょうか。 どうぞ宜しくお願いいたします。 (ちぃさん) 2015/10/30(金) 21:20 ---- 検索列を増やす という意味は? 今、B列でやっているけど、それと同じことを 他の列でもやりたいということなら。 (ついでに、勘違いしていたところもちょこっと直してあります) セル(どこでもいいです) =判定("B") とか =判定("I") とか、判定する数字が入った列を " " で囲んで指定。 Function 判定(col As String) As String Dim c As Range Dim r As Range Dim ng As Boolean Application.Volatile Set r = Range(col & 1, Range(col & Rows.Count).End(xlUp)) For Each c In r If c.Value < 15 Or c.Value > 20 Then ng = True Exit For Else With c.Resize(5) If WorksheetFunction.Max(.Cells) - WorksheetFunction.Min(.Cells) > 4 Then ng = True Exit For End If End With End If Next 判定 = IIf(ng, "否", "合") End Function (β) 2015/10/30(金) 23:15 ---- (β) さん ありがとうございます。 凄いです。 希望してた以上の回答内容です。 計算式よりシート内がスッキリしてていいと思いました。 ありがとうございました。 (ちぃさん) 2015/10/30(金) 23:47 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/201510/20151030133514.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97012 documents and 608132 words.

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