![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
Evaluateを使ってマクロに記述した関数に変数を使う方法
"=SUMPRODUCT((ISERROR(FIND(A1,B1:B100))=FALSE)*(C1:C100<=10))"
という関数を普段使用しています。
ふとこの関数をマクロで実行させようと思い(理由はありません、思い付きです)、
Range("D1").Value = Evaluate("SUMPRODUCT((ISERROR(FIND(A1,B1:B100))=FALSE)*(C1:C100<=10))")
としてみました。うまくいきました。
次に、
Dim i As Long
For i = 1 To 5
Range("D" & i).Value = Evaluate("SUMPRODUCT((ISERROR(FIND(A1,B1:B100))=FALSE)*(C1:C100<=10))")
next
としてみました。ここで考えたのですが、
FIND(A1,B1:B100)
この部分の「A1」を「i」を使って(つまりRange("D" & i)に連動させて)変数にすることは出来るのでしょうか?
ご教示願います。
今回は単なる好奇心で普段使っている関数をマクロで表現できないかなと思った次第で、どうしても知りたい!必要だ!というわけではありません。
お暇なときにお願いします。
No.2ベストアンサー
- 回答日時:
>今回は単なる好奇心で普段使っている関数をマクロで表現できないかなと思った次第で、どうしても知りたい
今回のようなマクロで、配列数式を埋め込むというのは、マクロとは少し違う問題です。それに、Evaluate 内は、SUMPRODUCT 関数は必要ないのです。配列数式に、インクリメンタル変数を埋め込むのは簡単ですが、Excelのバージョンなどに影響受けてしまいますから、あまり多用すべきではないと思います。
それを、一般プロシージャで表現できて、始めて、マクロが分かるということになると思います。
'-------------------------------------------
Sub Test1()
Dim i As Long
For i = 1 To 5
Cells(i, 4).Value = Evaluate("SUM((ISERROR(FIND(A" & i & ",B1:B100))=FALSE)*(C1:C100<=10))")
Next
End Sub
'以下は同じ内容のプロシージャです。
'-------------------------------------------
Sub Test2()
Dim i As Long, j As Long
Dim strTxt As String
Dim cnt As Long
For i = 1 To 5
strTxt = Cells(i, 1).Value
For j = 1 To 100
If Cells(j, 2).Value Like "*" & strTxt & "*" Then
If Cells(j, 3).Value <= 10 Then
cnt = cnt + 1
End If
End If
Next
Cells(i, 5).Value = cnt
cnt = 0
Next
End Sub
ご回答ありがとうございます。
自分でも違う方法で動かすことができましたが、いろいろな方法があるようでとても面白い世界だなと思います。
ご教示いただいた内容を参考に勉強してみます。
>それを、一般プロシージャで表現できて、始めて、マクロが分かるということになると思います。
ここにたどり着くまで長い道のりなんでしょうね。頑張ってみます。
No.1
- 回答日時:
この例で Evaluate に渡している引数は文字列なのだから、
Evaluate("SUMPRODUCT((ISERROR(FIND(A" & Cstr(i) & ",B1:B100...(略)")
のように & 演算子で単純に連結すればいいんじゃないかな。
ですが、私ならきっとこうします。
With Range("D1:D5")
.Formula = "=SUMPRODUCT((ISERROR(FIND(A1,$B$1:$B$100))=FALSE)*($C$1:$C$100<=10))"
.Value = .Value ' 数式を値に変換
End With
数式の内容は見てませんけど、このようにすれば A1 の部分はちょうど
数式のフィルのように変化します。変化させたくない部分は絶対参照で。
A1、A3、A5 のようなパターンならループでの処理になりますが。
ご回答ありがとうございます。
VBAやマクロにちょっと興味があるので、暇を見つけてはチョコチョコと独学でいじっている程度なのですが
そろそろ本格的に勉強してみようかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- Excel(エクセル) Excel表示形式 2 2022/09/09 09:57
- Excel(エクセル) Excel セルの数値を参照させるにはどうすれば良いですか? 4 2022/08/28 16:50
- Excel(エクセル) Excel 数式を教えてください 2 2022/06/02 12:24
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Excel(エクセル) エクセルで月末、月初の判定をしたい。 4 2022/05/18 23:22
- Excel(エクセル) 時間差を求めるマクロコードを教えてください。 4 2022/05/17 18:22
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
VBA Evaluate関数 型が一致しません
Excel(エクセル)
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
-
4
Evaluate()に文字列の形式の数式を渡すには
Visual Basic(VBA)
-
5
Excel 関数? 文字列になっている数値を計算したいのですが
Excel(エクセル)
-
6
VBA2005 16進を2桁で表示したい。
Visual Basic(VBA)
-
7
sumproductの計算式で「エラー2015」(ローカルウィンドウにて)が表示(Excel2007、2003)
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで 自動的に◯や数字を...
-
エクセルでファイルの最終更新...
-
シフト表をエクセルで作るとき...
-
Excel 2019 [オプション]の[リボンのユ...
-
Excelに詳しい方! B列が「日...
-
Excelファイルが開けません
-
excel2013 MonthDays 関数が使...
-
スプレッドシートの関数につい...
-
【マクロ】2回実行したら、エ...
-
特定の文字列を含む、住所を抽...
-
EXCELの散布図で日付が1900年に...
-
エクセルのツールバーから数値...
-
Excelで表を作ったところに文字...
-
祝日と土曜、日曜の合計をカウ...
-
Excelについて
-
【マクロ】名前を保存する際に...
-
Excel分数の表示について
-
エクセルでCtrl+Tでテーブルの...
-
マイクロソフトのPADを使ってい...
-
【EXCEL】画像の黄色部分の抽出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報