• ベストアンサー

エクセルのマクロと関数について

お世話になります。 1)マクロの方法で以下のようにしたいのですが可能でしょうか? 1行目にオートフィルタがかかっていればAAの処理をし、もしオートフィルタがかかっていないのであればBBの処理をしなさい。 というようなマクロです。if~then~else をつかってすると思うのですが、どうもうまくいきません。 2)関数もしくは式を使って以下のようにしたいのですが可能でしょうか?(ほかに方法があるのであれば関数、式にこだわりません) エクセルのデータベース(A1:E100のデータとし、A1:E1は項目が入っており、A1:E1にオートフィルタをかける)からオートフィルタをかけて項目を絞るのですが、出てきた結果の1番上、つまりA2:E2にあるB2とD2の結果を別のシートにある結果欄それぞれ2箇所にコピーする。多分別シートにある結果欄に何らかの関数とか式を入れればいいのかなと思いますが・・・ ちなみに上記2つの質問は関連性はありません。 わかりにくい質問で申し訳ありませんが、必要ならば補足いたします。 かなり困ってますのでよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

1)については。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_autofilter.html オートフィルタを解除する ・FilterMode プロパティで状態を調べることができます。 が参考になると思います。

nowget
質問者

補足

早速のご回答ありがとうございます。 何とかできそうですね。 試してみます。 それと、2)ですが、これをヒントにもう少し複雑な処理をしたかったのですが、今風呂で頭を洗っていたら、ヒントがよぎってきました。(笑)多分成功すると思いますので、大変申し訳ありませんが、2)の質問は撤回いたします。 考えていただいた皆様には大変申し訳ありませんが・・・ また、ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

ACtivesheetのプロパティFilterModeを聞けばよい。 Sub aaa00()   If ActiveSheet.FilterMode = True Then    ActiveSheet.ShowAllData   Else     MsgBox "フィルタ モードではありません。"   End If End Sub

すると、全ての回答が全文表示されます。

関連するQ&A