この記事では、数式の解を狙い値に合わせこむゴールシークスキルをVBAを使って複数のセルに一括適用する方法をご紹介していきます。
※今回紹介するゴールシークとは、数式セルの中で参照されているセルのデータを自動で調整し、数式セルの解を自動で調整してくれる、という便利な機能です。
基本的には、以前紹介した以下の記事を発展させた内容になっています。
「ゴールシークの使い方から勉強したい」
という方はぜひ以下の記事からご覧ください。
【エクセル】数式の解を狙いの値に合わせこみ!VBAへの組み込みも!
それでは本題に入っていきましょう。
やりたいことのイメージ共有
この記事の内容があなたのやりたいことと一致していなければ意味がないので、まずはこれから紹介する作業内容を簡単に共有しておきましょう。
今回の記事では、以下のように様々な条件で台形の面積を計算しているというシーンで実行していきます。
とりあえず面積を計算し、結果はバラバラという状態です。(2行目の黄色セル)
この状態から、
「面積がすべて100になるように高さ(5行目の灰色セル)を調整したい」
こんな状況時々あるのではないでしょうか?
今回の記事では、まさにこんな状況で使えるスキルを紹介していきます。
あなたのやりたいことと一致していれば、ぜひ続きをご覧ください。
VBAでゴールシークを一括実行する方法
というわけで、先ほど紹介した状況をVBAをつかって解決していきます。
※VBAの使い方がよくわからない、という方は以下の記事を参考にしてください。
エクセルマクロ(VBA)の始め方!初心者向けに画像を使って詳細解説
早速ですが、以下がそのVBA実行コードです。
Sub goal_seek()
Dim i As Integer
goal_value = 100
For i = 1 To 6
Cells(2, 1 + i).GoalSeek goal:=goal_value, ChangingCell:=Cells(5, 1 + i)
Next
End Sub
非常に簡単ですね。
基本的には、VBA上でのゴールシークを実行をFor文で繰り返し実行しているだけです。
サンプルコードの実行結果
最後に、先ほどのコードを実行してみましょう。
開発タブ⇒マクロ⇒goal_seek⇒実行で先ほどのマクロを実行します。
以下がその実行結果です。
5行目の高さが変更されていることがわかると思います。
そしてその結果、2行目の面積がすべて100になっていると思います。
というわけで問題なく実行できましたね。
今回のスキル紹介は以上になります。
おわりに
というわけで数式の解を狙いの値に合わせこむ、ゴールシークを複数セルに一括適用する方法をご紹介しました。
今回はすべての数式セルを同じ値にしましたが、少しコードを修正すれば解の数値もセルによって変更できます。
ぜひチャレンジしてみましょう。
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント