アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくお願いします
いつもgooの皆さんには大変お世話になっております
お陰様で全く知識ゼロだったマクロが少しですが書けるようになりました
エクセルも大分わかってきました
win8.1でエクセルは2013です

式の中身です(日本語表示)
もしも、AN42の値が1で、なおかつ、M42とO42とAO42とAP42の値がすべて同じなら1
そうでなければ0

教えていただきたい事
上記の内容の式を
Range("AQ" & TR).Formula =
の右側に書くにはどう書いたらよいでしょうか?
TRは行番号で42です

以上です
うまく説明できなくて迷惑をかけるかもしれませんが
よろしくお願いします

A 回答 (2件)

当方、初心者のくせにメッセージ失礼いたします。



セルAQ42にコチラの関数を入れました。
=IF(AND(AN42=1,M42=O42,O42=AP42),1,0)

こちらをVBAに直すとこうなりました。
"=IF(AND(RC[-3]=1,RC[-30]=RC[-28],RC[-28]=RC[-1]),1,0)"

マクロに詳しい方ならもっと綺麗なVBAを記載してくださるかと思います。。。
    • good
    • 0
この回答へのお礼

助かりました

jjnnkkさんこんばんは
親切に教えていただきありがとうございました

=IF(AND(AN42=1,M42=O42,O42=AP42),1,0) 部分の
M42=O42,O42=AP42 が書けませんでした

答えを見ると「なるほどそうだったのか」とすぐわかるのですが
全く頭に浮かびませんでした
"=IF(AND(RC[-3]=1,RC[-30]=RC[-28],RC[-28]=RC[-1]),1,0)" とともに
大切に使わせていただきます
ありがとうございました

お礼日時:2015/12/15 22:43

こんにちは1



質問文の回答をそのまま投稿すると
Range("AQ" & TR).Formula ="=IF(AND(AN42=1,M42=O42,O42=AP42),1,0)"
といった感じになると思います。
ワークシート関数の数式がそのまま使えます。
(ただし、数式に文字列が含まれる場合はダブルクォーテーションが必要になります)

>TRは行番号で42です
わざわざ変数を行番号に持ってきているのは、ループさせたい!とお考えなのでしょうか?

あくまで個人的見解ですが、
今回のようの場合はわざわざVBAにせず、Excelの機能でできることはExcelにやらせた方が簡単だと思います。
(単に数式をドラッグ&コピーするだけのようなので・・・)

一気にある範囲に数式を入れたい!という場合は
仮にAQ42~AQ100セルに数式を入れるとすると

Sub Sample1()
Range("AQ42:AQ100").Formula = "=IF(AND(AN42=1,M42=O42,O42=AP42),1,0)"
End Sub

とすればAQ100セルまでフィル&コピーした数式が入ります。
ただ、ここまでやるのであれば

Sub Sample2()
With Range("AQ42:AQ100")
.Formula = "=IF(AND(AN42=1,M42=O42,O42=AP42),1,0)"
.Value = .Value
End With
End Sub

としてやれば、値のみのデータになりますので、
数式をそのまま残すよりファイル容量は少なくなるはずです。

※ 直接の回答になっていないかもしれませんが
まずはこの程度で・・・m(_ _)m
    • good
    • 0
この回答へのお礼

解決しました

tom04さんこんばんは
親切に教えていただいてありがとうございます

"=IF(AND(AN42=1,M42=O42,O42=AP42),1,0)"部分の
M42=O42,O42=AP42が書けませんでした

教えてもらうと簡単なのですが、全く頭に浮かんできませんでした
同じような事例を過去にも教えてもらっているのに
ちょっと型が変わるとお手上げですから、頭が悪くてあきれます

大事に使わせていただきます
ありがとうございました

お礼日時:2015/12/15 22:36

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