Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5801 / 13646 ツリー ←次へ | 前へ→

【48770】オートフィルタについて ooi 07/5/7(月) 21:00 質問[未読]
【48775】Re:オートフィルタについて ウッシ 07/5/7(月) 23:32 発言[未読]
【48795】Re:オートフィルタについて ooi 07/5/8(火) 22:26 発言[未読]
【48796】Re:オートフィルタについて ウッシ 07/5/8(火) 22:59 発言[未読]

【48770】オートフィルタについて
質問  ooi  - 07/5/7(月) 21:00 -

引用なし
パスワード
   こんばんは。
オートフィルタについて質問があります。

B列とC列に%で表示した数値が入っています。
25.33%  36.00%
32.67%  25.84%
のようにです。
C列の方が5%以上大きければ、"以上"という名のシートに転記
-5%以下であれば、"以下"という名のシートに転記したいと思っています。

D列に計算結果を表示し、
10.67%
-6.83%

その列で
selection.autofilter field:=4,criteria1:=">0.05"
するというコードは分かるのですが
D列に結果を書き出さずに
転記する方法を知りたいです。
どうかご教授くださいませ。
よろしくお願い致します。

【48775】Re:オートフィルタについて
発言  ウッシ  - 07/5/7(月) 23:32 -

引用なし
パスワード
   こんばんは

フィルタオプションで計算式を抽出条件に使えますので、"以上"、"以下"というシート
の「Worksheet_Activate」イベントにフィルタオプションでの抽出コードをセット
してみてはどうでしょうか?

【48795】Re:オートフィルタについて
発言  ooi  - 07/5/8(火) 22:26 -

引用なし
パスワード
   ▼ウッシ さん:

お返事ありがとうございます。

>フィルタオプションで計算式を抽出条件に使えますので、"以上"、"以下"というシート
>の「Worksheet_Activate」イベントにフィルタオプションでの抽出コードをセット
>してみてはどうでしょうか?

理解が悪く申し訳ございません。
正しい計算式の書き方が分からず
条件の欄を指定する際
0.05>($B$1-$A$1)など記入してみるものの
参照できないとエラーが出てしまいます。

どのように書くべきなのでしょうか。
よろしくお願いいたします。

【48796】Re:オートフィルタについて
発言  ウッシ  - 07/5/8(火) 22:59 -

引用なし
パスワード
   こんばんは

あまりに情報が少ないので、それなりのレスしか書けないです。
「Worksheet_Activate」イベントの話しはちょっと置いといて、

「データ」というシートの1行目に項目名が有るとします。

  A    B   C    D   E ・・・・IV
1 項目1  項目2  項目3
2 甲  25.33% 36.00%
3 乙  32.67% 25.84%

IV列を一時的に作業列として使用します。

C列の方が5%以上大きければ、"以上"という名のシートに転記
-5%以下であれば、"以下"という名のシートに転記します。

Sub test()
  Dim cR As Range
  Application.ScreenUpdating = False
  With Worksheets("データ")
    Set cR = .Range("IV1:IV2")
    cR(2, 1).Formula = "=(C2-B2)<=-0.05"
    .Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=cR, _
      CopyToRange:=Worksheets("以下").Range("A1:C1"), _
      Unique:=False
    cR(2, 1).Formula = "=(C2-B2)>=0.05"
    .Range("A1").CurrentRegion.AdvancedFilter _
      Action:=xlFilterCopy, _
      CriteriaRange:=cR, _
      CopyToRange:=Worksheets("以上").Range("A1:C1"), _
      Unique:=False
  End With
  cR.Delete xlShiftUp
  Set cR = Nothing
  Application.ScreenUpdating = True
End Sub

5801 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free