dポイントプレゼントキャンペーン実施中!

Excel VBAについて質問です。


=IFERROR(INDEX($A$2:$AI$2,MATCH($A$4:$AH$4,$A$1:$AI$1,0)),"")
この数式をVBAで表現したいのです。

Sub aaa()
For i = 1 To 38 Step 2
With Application
myR = .Index(Cells(2, i), .Match(Cells(4, i), Cells(1, i), 0))

Cells(7, i) = myR

End With

Next i

End Sub

このように記載すると、#N/A になります。

どこに原因があるのか、お手数ですが、ご教示をお願いします。

A 回答 (2件)

No1です。



ご質問文には
>この数式をVBAで表現したいのです
としかないので、それだけを元にNo1では回答をしています。
不明点は勝手に解釈しましたが、それはNo1に記した想定の通りです。

ご提示の関数式とは違うことをなさりたいのなら、それはそれでかまいませんが、当方には何をなさりたいのかはわかりませんので、No1の回答はスルーしていただければ宜しいかと思います。
    • good
    • 1
この回答へのお礼

根本的に勘違いしていました。
ご指摘の内容通りでした。
トンチンカンな返信をしたことをお詫びします。

正確がご指摘ありがとうございました。

お礼日時:2023/04/18 18:59

こんにちは



前提や内容の説明がないので、勝手に解釈しました。

・ご提示の式は365環境などで、スピル機能を利用しているものと想定。
・式がどこに設定されているのか不明ですが、A7セルに入力してあるものと想定。

>このように記載すると、#N/A
単純に、検索がヒットしないのでエラー値になっているものと推測します。

>どこに原因があるのか、お手数ですが、ご教示をお願いします
いろいろありすぎるようなので、以下はざっと見て気付いた点のみです。

・ループの範囲
>For i = 1 To 38 Step 2
となっていますが、元の式では$A$7:$AH$7の範囲でスピルされていると思いますが?
(列番号38はAL列)
また、Step 2 としている意味も不明です。

・Match関数
>.Match(Cells(4, i), Cells(1, i), 0)
第二引数は固定のセル範囲(式では $A$1:$AI$1)だと思いますが、変えてある理由が不明です。

同様に
・Index関数
> .Index($A$1:$AI$1, ~~~
第一引数は固定セル範囲(式では $A$2:$AI$2)だと思いますけれど?

・元の関数式では、該当がない場合にはエラー処理で空白を返すようにしてありますが、ご提示のコードでは見当たりません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>>また、Step 2 としている意味も不明です。

1行飛ばしで、転記したと考えています。

転記したい内容は、2行目

4行目と、1行目が一致した場合としたいのです。


>.Match(Cells(4, i), Cells(1, i), 0)

このくだりですが、
4行目と1行目が一致というようにならないのでしょうか?

お礼日時:2023/04/18 18:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!