- ベストアンサー
エクセルVBAで、自作関数作れますか?
エクセルのVBAをはじめて使うのですが、たとえば既存の関数なら、 =Abs(a1) でa1のセルが絶対値になりますが、 a列すべてを自作関数で変換させる方法が知りたいです。自作関数は作れるのでしょうか? =jisaku_fun(a1)など
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
一つの関数で複数のセルの内容を変えるユーザー関数はありません。 一つのセルでいいならVisualBasicEditorを立ち上げて標準モジュールを挿入し Function jisaku_fun(ATAI) 処理の内容 jisaku_fun = 結果 End Function のようにすれば作れます。 あなたのPC上で常に動かしたいなら、個人用マクロブックに保存するか アドインファイル化して登録ですね。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
質問者の誤解は、既回答などでご指摘の通りですが、1セル用に作った関数を同列の他セルへ複写することで、A列のA1:A100(例えば)に同じ処理をすることが可能です。 =FN(A1)とB1に入れて、B1の式をB2,B3,・・・に複写すると B2部はA2について、B3にはA3について処理した結果が得られます。 セルを表す引数は複写で(ユーザー関数においても)順次変化してくれますから。 こういう点で、何かもやもやしてませんか。 そういうことは判っているということなら、(私の誤解だったら)すみません。
- hana-hana3
- ベストアンサー率31% (4940/15541)
自作関数では「他のセルを参照する」事ができません。 したがって、VBAで実行するしか方法はありません。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
関数から、セルの内容を変更することはできません。 手続きとして Sub jisaku_fun() End Sub として手続きから処理するようにします。 メニューからマクロや コマンドボタンに割り付けて実行するようにすればいいです。