[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルの値が0.08以下or1以上なら削除』(くろたろう)
Excel2007・WinXp/SP3
BOOK(WORK.xlsm)に6シート、同じようなレイアウトで 64列×700行程度データが入っています。 (A:C列は見出し、1行目は日付、全セル表示形式は標準) 実際は全シートに処理を行いますが、今回はその部分は省きます。
D2以降のセルの値が「0.08以下」or「1以上」なら削除したいのですが 以前、こちら [[20110704170912]] の質問でseiyaさんに教えていただいた 「Evaluate」を使用してみようと下記のコードを書いたのですが エラー値が入ってしまいます。
なにか根本的な事を間違えているのか、それとも簡単な記述ミスなのか 悩みこんだんですが分からず仕舞いです。
の、「Upper」の扱いのご説明あたりが関係するのかな〜 配列になってないのかな〜等と探ってはみましたが…
どのように記述すれば実現出来るか、ご教示いただけないでしょうか。 どうぞ、よろしくお願いいたします。
Sub MyDel2()
Dim maxrow As Long, maxcol As Long Dim i As Long, j As Long Dim x As String
With ActiveSheet maxrow = .Cells(.Rows.Count, 1).End(xlUp).Row maxcol = .Cells(1, .Columns.Count).End(xlToLeft).Column
With .Range(.Cells(2, 4), .Cells(maxrow, maxcol)) x = .Address .Value = Evaluate("if(OR(" & x & ">1," & x & "<0.08),""""," & x & ")") End With End With End Sub
ちなみに、Forの入れ子でやりたい事は実現出来ているので、勉強の為の質問です。
x.address="$D$2:$J$7" だとすると、
このマクロの結果は
=IF(OR($D$2:$J$7>1,$D$2:$J$7<0.08),"",$D$2:$J$7)
をCtrl+Shift+Enterで確定する場合の結果と同じはずです。
この配列数式の場合、
$D$2:$J$7>1、$D$2:$J$7<0.08の論理配列にひとつでもTRUEがあれば
OR関数の部分がTRUEになってしまうので、結果は全て""となるはずです。
(だから「エラー値が入ってしまいます」というのはかえって不思議なのですが)
.Value = Evaluate("if((" & x & ">1)+(" & x & "<0.08),""""," & x & ")")
とすると、期待する結果が得られますか?
(みやほりん)
みやほりんさん、レスをありがとうございます。
.Value = Evaluate("if((" & x & ">1)+(" & x & "<0.08),""""," & x & ")") を入れてみましたが、同じ結果となりました。
質問文に足りなかった部分を追記します。 ・エラー値は「#VALUE!」が全セルに入ります。 ・値は「0.131871012478333」といった数値か、nullです。
0.115229673 0.071536178 0.102046779 0.125989364 0.126171048 0.126354024 0.126624797 0.136122989 0.137136804 0.143860692 0.143051701 0.142711573
引数の種類が正しくない…?うんむむむ? 値にスペース等は入っていないようです。 他に確認する事がありましたらお願いいたします。 (くろたろう)
ちなみに、みやほりんさんの式をシート上でCSEで確定したところ 希望の結果が返りました。 もう少し検証してみます。 (くろたろう)
当方、2003で検証しているので、Excel2007ではEvaluateの仕様が違うとか・・・
(配列を受け付けないなど)
Sub test() [a1:a3] = [b1:b3<>1] End Sub
新規シートで上記を試してみてTRUEやFALSEがA1:A3に表示されるかどうか。
(みやほりん)
みやほりんさん、引き続きありがとうございます。 どうも、R1C1表示になっていた為にエラーになっていたようです。 アドレスが参照されなかったんですね。
64列を数える為に変更した為にエラーが起こっていたとは… いつも、変な躓きをして恥ずかしい限りですが、 配列式の考え方のふわふわしてる部分(課題)も見えた気がします。 ありがとうございました! (くろたろう)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.