|
Jaka さん、ギンさん、こんばんは。
Jaka さんのフォローで解決したみたいなので何よりです。
投稿したので、ちょっとだけ付けたし。
> With rngb
> .Offset(0, 2).Select '←これ追加
> .Offset(0, 2).Formula = "=IF(SUMPRODUCT((" & Aadd & "=rc[-2])*(" & _
> Badd & "=rc[-1]))=1,true,"""")"
>
> On Error Resume Next
> Set ans = .Resize(, 3).SpecialCells(xlCellTypeFormulas, xlLogical)
> ans.Select '←これ追加
> .Offset(0, 2).Select '←これ追加
> .Offset(0, 2).ClearContents
> If Err.Number = 0 Then
> ans.EntireRow.Select '←IF文改行して、これ追加
> ans.EntireRow.Delete
' ↑これで削除しているのですが、
' データ数(シートBの)が1000行ぐらいなら
' まあ、我慢できますが、
' 7000行ぐらいになるとコード1行で済むのですが、
' 処理は遅くなってしまい我慢できませんでした。
' データ数が多いときは、削除も分割して行った方がよいかも・・。
' Jakaさんが目安箱で検証しているので参考にして下さい。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=54;id=FAQ
'
> End If
> On Error GoTo 0
> End With
Jakaさん、絡むのは久しぶりですねえ!!
>
> sushiki = "=if(iserror(FIND(""ED""," & myadd & "))," & _
> "if(" & myadd & "="""",""""," & myadd & ")," & _
> "MID(" & myadd & ",FIND(""ED""," & myadd & "),LEN(" & myadd & ")))"
> Debug.Print sushiki '数式を確認して下さい
> rng.Value = Evaluate(sushiki)
>
>う〜ん、さすがと言うか、こういうセル範囲でのEvaluateと、セル範囲での関数は全く思いつかなかったです。
>勉強になりました。
>今度からこれ使おうっと...。
>どうも、ありがとうございました。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=21819;id=excel
↑このご質問ですね!!
あれっ・・・、Evaluateで配列数式が扱えると言う事を教えてくれたのは
Jakaさんだよ!!(私への直接の回答ではなかったけど
これは、間違いない、私、よく覚えています)
教えてもらってからなんです。Evaluateを多用し始めたのは・・・。
便利なんですが、Evaluateメソッドに「配列数式だよ」って、認識させるには
工夫が必要みたいです。
つまり、セルに直接入力可能な配列数式が全部Evaluateでも配列として認識するとは
限らないみたいですよ!!
これは、仕方がないとは思いますが・・・。
|
|