- ベストアンサー
VBAでのMATCH関数の使用
nishi6の回答
シートが異なるとは思ってもいませんでした。 例えば、Cells(r, 132) が Sheet2 にあれば、下記のようにすればいいはずです。 シートを指定していなければ、マクロを実行したシートのCells(r, 132)になっているはずです。 Application.WorksheetFunction.Match(Worksheets("Sheet2").Cells(r, 132), Range("リース型具Key1"), 0) それから、Match関数で結果が求まる場合は問題ありませんが、結果が求まらない場合の処理も考慮すべきでしょう。下記は参考例です。 Sub myTest01() Dim shtNo As Integer shtNo = 2 Dim ws2 As Worksheet Dim ws3 As Worksheet Set ws2 = Worksheets("Sheet" & shtNo) Set ws3 = Worksheets("Sheet3") On Error GoTo ErrorTrap MsgBox Application.WorksheetFunction.Match(ws2.Cells(2, 2), _ ws3.Range("リース型具Key1"), 0) ' '// 色々な処理 // ' Set ws2 = Nothing Set ws3 = Nothing Exit Sub ErrorTrap: MsgBox ws2.Cells(2, 2) & "は見つかりません。" Resume Next End Sub
関連するQ&A
- MATCH関数について
Dim 日付 As Range Dim n As String, ans As String Set 日付 = Worksheets(1).Range("c3:ag3") n = InputBox("日付は") ans = Application.WorksheetFunction.Match(n, 日付, 0) MsgBox (ans) 現在VBを勉強しています。 上記のように作りましたがエラーが出ます。 実行時エラー1004 worksheetfunctionクラスのMATCHプロパティを取得できません。 となってしまいます。 c3:ag3には日付が並んでいます。 どなたかわかる方がいましたら、お願いします。
- ベストアンサー
- Visual Basic
- 【VBA】On Error をつけても「Match
【VBA】On Error をつけても「Matchプロパティを取得できません」を回避できません。 今晩は、質問させていただきます。どうぞよろしくお願いいたします。 環境:エクセル2010でございます。 下のようにコーディングしておりますが、「Matchプロパティを取得できません」が出てコード実行が中断されてしまいます。 取得できなかった場合の対処は既に(更にその下に)コーディングしておりますので、Matchのエラーをスルーさせたいのですが。。。 On Error GoTo error1 line1 = (Application.WorksheetFunction.Match(strTime, WS_data.Range("G:G"), 0)) '↑この行でエラーになります。 error1: On Error GoTo 0 On Error GoTo error1をOn Error Resume Nextに変えても同じ症状になってしまいます。 もしお詳しい方がいらっしゃいましたらアドバイスいただけないでしょうか。 どうぞよろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- VBA関数_オブジェクトが指定できない
Excel_VBAで WorksheetFunction.Sum (Range(Cells(2, 14), Cells(iCount, 14))) 上記のコードに ActiveSheet を記述(ワークシートを指定)したいのですが エラーになってしまい、何処にどのように記述してよいか ご教授よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- Excel ワークシート関数をVBAで使用したい
お世話になります。 Excelでワークシート関数をVBAで使用したいのですが、うまくいきませんでした。 関数ですと「ISERROR(FIND(V$10,R$11))=FALSE」のような式をVBA上で使用したいと思い、以下のようにコードを書いてみましたが If Application.WorksheetFunction.IsError(Application.WorksheetFunction.Find(Cells(i, j), Cells(i, 18))) = False Then Cells(i, j).Select End If 「実行時エラー'1004' WorksheetFunction クラスのFindプロパティを取得できません」となります。 入れ子が問題なのでしょうか。 よろしくお願いします。
- ベストアンサー
- Excel(エクセル)
- VBA ワークシート関数のエラー
シートに数式を入れていたものを、VBAで値のみ入力しようと考えています。 そこで、.Cells(1,1) = WorksheetFunction.数式といった形のメソッドを試しています。 しかし、複雑な数式を記述するとエラーが出てしまいます。 成功 (iferrorというワークシート関数が1つ) Debug.Print WorksheetFunction.IfError(1 / .Cells(1, 5) + 1 / .Cells(1, 6) + 1 / .Cells(1, 7) - 1, "P") 失敗(ワークシート関数のifとcountifなど複数のものが数式に混入) Debug.Print WorksheetFunction.If(CountIf(Range("C17:D49"), Range("C29")) > 5, Range("C29"), Range("D29")) Countifの場所でエラーになります。このcountifを使えるようにするためには、どうすればよいのでしょうか? WorksheetFunction.if(WorksheetFunction.Countif(、、、、という書き方はダメでした。 数式が汚くてすみません。 宜しくお願いいたします。
- 締切済み
- Excel(エクセル)
- Excel VBA ""を含む関数を使うには
Excel VBA ""を含む関数を使うには お世話になっております。 Excel VBAでMatch関数を使って下記のようにしたいのですが、 受け付けてもらえません。 n = Application.WorksheetFunction.MATCH("小計",range("B3:B10"),0) "小計"を""小計""と二重でくくれば良いような気がしたのですが、だめです。 どうすればよいでしょうか?
- ベストアンサー
- その他MS Office製品
- ユーザー定義関数を作りVBAで記述
aaaと言う、ユーザー定義関数を作りVBAで記述して使う場合はどのように記述すればよいでしょうか。 通常のワークシート関数であれば、 Cells(1, 1) = Application.Sum(Range("G1:G100")) などとなりますが、 Cells(1, 1) = Application.aaa(Range("G1:G100")) とするとエラーになります。 初歩的な質問だとは思いますが、よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- Excel VBA TREND関数について
VBAにて6次近似の計算をするためのプログラムを組んでいるのですが【コンパイルエラー:不正な文字です】 と言われてしまいます。 6次近似の計算式の記載方法を教えて下さい。 よろしくお願い致します。 尚、現状は以下の通りです。 ============================== Dim i As Long Dim deg As Double Cells(i, 10).Value =Application.WorksheetFunction.Trend(Range(Cells(i, 1),Cells(i + 5, 1)), Range(Cells(i, 8), Cells(i + 5, 8)))^{1,2,3,4,5,6}, deg^{1,2,3,4,5,6}, 1) ===============================
- 締切済み
- オフィス系ソフト
- VBA Match関数の使い方について
お世話になります ご教示頂けたら幸いです シート結果セルE4の値を検索してシート結果G4の値を 検索行のB列に値を転記したいです 下記のように書くとMatch関数行でエラーが出てしまいます どの様にすればいいのでしょうか? お手数おかけしますが 何卒よろしくお願いいたします With Sheets(Worksheets("結果").Range("A4").Value) WorksheetFunction.Match(Worksheets("結果").Range("E4").Value, Range("A1:A1000"), 0).Offset(3) = _ Worksheets("結果").Range("A4").Offset(2).Value End With
- 締切済み
- Excel(エクセル)
- Excel2003 Match関数について
WINXP Excel2003 VBA データベース検索について教えて下さい。 Sub データ表示() Dim no As Long With Sheets("データ入力") On Error GoTo エラー処理 no = WorksheetFunction.Match( _ .[B1], [データ].Resize(, 1), 0) On Error GoTo 0 .[B5] = [データ].Cells(no, 2) .[D5] = [データ].Cells(no, 3) .[E5] = [データ].Cells(no, 4) .[F5] = [データ].Cells(no, 5) .[B7] = [データ].Cells(no, 6) .[C7] = [データ].Cells(no, 7) .[D7] = [データ].Cells(no, 12) .[B9] = [データ].Cells(no, 8) .[B11] = [データ].Cells(no, 9) .[B13] = [データ].Cells(no, 10) .[D13] = [データ].Cells(no, 11) Exit Sub エラー処理: MsgBox "該当するNo.のデータはありません" .[B5:F5].ClearContents .[B7:F7].ClearContents .[B9:F9].ClearContents .[B11:F11].ClearContents .[B13:F13].ClearContents End With End Sub というプログラム(EXCEL極意6VBAという参考文献の一部を利用)で、1枚のシート(”データ”という 名前のデータベース)51列ほどあります。からキー(一番右端の列をキー)の値と一致したデータを 別のシートへ呼び出す方法です。 そこで、こまっているのが、あるキーだとちゃんと呼び出してくるのに、肝心の希望のキーだと、エラーになって該当データ無となってしまうのです。 簡単にかくと ”データ”というデータベース A列 B列 C列 D列・・・・・・・・ AY列 001 あああ AAAA 2012/08/20 120821002 ←このAY列をキーとして検索 をかけるとエラー処理にいってしまう。 B列”あああ”だとうまくデータを検索してくる。 Vlook関数だとキーとなるデータは一番左端にないといけないということなのですが、Match関数もそうなのでしょうか? ちなみにオートフィルターでのVBAだとうまくいくのですが、・・・ もしこのつたない文で、御理解いただき、おわかりになる方が、いらっしゃれば、ご指導ください。 もしくは、Match関数以外での検索方法でもけっこうです。 最終的に希望する結果は、D列の日付(重複する日付有)で絞り込み、AY列のキー(重複するデーターは無)でその行のデーターを別シートに表示させること
- ベストアンサー
- その他MS Office製品
お礼
nishi6さん どうやら私の理解不足で,On Errorを考慮していないとMATCHしなかったときにエラーになることが判りました。ご指摘のエラー文を入れたことでOKになりました。有難う御座いました。
補足
nishi6さん,さっそく有難う御座います。 ご指摘の方法で試しました。うーん,うまくいきません。 Match(ws3.Cells(2,2),ws3.Range("リース型具")・・のように名前が参照する範囲セルのシートと同様のシートのCellを指定するとOKですが,ws2.Cellsとしたら同様のエラーが発生します。仕様なのでしょうか。 ちなみに,アクティブシートをws2にしていることは関係ないでしょうか。