Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5122 / 13644 ツリー ←次へ | 前へ→

【52498】セル内容が式かどうか調べる方法 トキ 07/11/15(木) 20:51 質問[未読]
【52499】Re:セル内容が式かどうか調べる方法 ハチ 07/11/15(木) 21:13 回答[未読]
【52502】Re:セル内容が式かどうか調べる方法 ponpon 07/11/15(木) 21:34 発言[未読]
【52508】Re:セル内容が式かどうか調べる方法 ichinose 07/11/16(金) 8:08 発言[未読]
【52516】Re:セル内容が式かどうか調べる方法 ponpon 07/11/16(金) 14:49 発言[未読]
【52518】Re:セル内容が式かどうか調べる方法 Jaka 07/11/16(金) 15:26 発言[未読]
【52522】ありがとうございます。 トキ 07/11/16(金) 20:51 お礼[未読]

【52498】セル内容が式かどうか調べる方法
質問  トキ E-MAIL  - 07/11/15(木) 20:51 -

引用なし
パスワード
   セルの内容が数値や文字ではなく、式や関数になっているか調べる方法
はありますか? 関数でも、VBAでもOKです。
IS関数では見当たらないし・・・

エクセルの実技テストをするのですが、

1.A1〜A10の合計をA11に求めなさいという問題で、
2.A11に「SUM(A1:A10)」とすれば100と出るとします。
3.正しくSUM関数を入力出来たかどうかを、IF関数で調べるために、B1に以下のような式を作りました。
 =IF(A11=SUM(A1:A10),”○”,”×”)

4.当然、正しくSUM関数が入力されてれば○がでますが、
 ただ単に数値の100を入力しても○になってしまいます。

ISNUMERIC関数でも区別されなかったと思います。
出題としてIF関数も出したいのですが、同じ現象がおきます。
何かよい方法はないでしょうか?

【52499】Re:セル内容が式かどうか調べる方法
回答  ハチ  - 07/11/15(木) 21:13 -

引用なし
パスワード
   ▼トキ さん:
>セルの内容が数値や文字ではなく、式や関数になっているか調べる方法
>はありますか? 関数でも、VBAでもOKです。
>IS関数では見当たらないし・・・
>
>エクセルの実技テストをするのですが、
>
>1.A1〜A10の合計をA11に求めなさいという問題で、
>2.A11に「SUM(A1:A10)」とすれば100と出るとします。
>3.正しくSUM関数を入力出来たかどうかを、IF関数で調べるために、B1に以下のような式を作りました。
> =IF(A11=SUM(A1:A10),”○”,”×”)
>
>4.当然、正しくSUM関数が入力されてれば○がでますが、
> ただ単に数値の100を入力しても○になってしまいます。
>
>ISNUMERIC関数でも区別されなかったと思います。
>出題としてIF関数も出したいのですが、同じ現象がおきます。
>何かよい方法はないでしょうか?

あまり良くみてませんが、
.HasFormula では?

【52502】Re:セル内容が式かどうか調べる方法
発言  ponpon  - 07/11/15(木) 21:34 -

引用なし
パスワード
   ただ単に、関数であるだけでなく、正しい関数かどうかも判定するのでしょう?
ならば、こんなかな?
Sub test()
   Range("B1").Value = IIf(Range("A11").Formula = "=SUM(A1:A10)", "○", "×")
End Sub

A11に関数を入れたときに判定したいなら、
Worksheet_Changeイベントを使うといいかも。

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .Value = "" Then Exit Sub
    If .Count > 1 Then Exit Sub
    If .Address(0, 0) <> "A11" Then Exit Sub
    Application.EnableEvents = False
     Range("B1").Value = IIf(Range("A11").Formula = "=SUM(A1:A10)", "○", "×")
    Application.EnableEvents = True
  End With
End Sub

【52508】Re:セル内容が式かどうか調べる方法
発言  ichinose  - 07/11/16(金) 8:08 -

引用なし
パスワード
   ▼トキ さん:
おはようございます。


>
>エクセルの実技テストをするのですが、
>
>1.A1〜A10の合計をA11に求めなさいという問題で、
>2.A11に「SUM(A1:A10)」とすれば100と出るとします。
>3.正しくSUM関数を入力出来たかどうかを、IF関数で調べるために、B1に以下のような式を作りました。
> =IF(A11=SUM(A1:A10),”○”,”×”)
>
>4.当然、正しくSUM関数が入力されてれば○がでますが、
> ただ単に数値の100を入力しても○になってしまいます。

これ、厳密にやると結構大変だと思いますよ!!

正解を =SUM(A1:A10) という文字列と決め、それ以外は不正解なら良いですが・・。

=SUM($A$1:$A$10)   絶対アドレス指定は不正解?

=SUM(OFFSET($A$1,0,0,10,1)) これも不正解?

他にも名前の定義を使えば・・・、記述方法は色々です。

出題方法も考えなければなりませんね!!

【52516】Re:セル内容が式かどうか調べる方法
発言  ponpon  - 07/11/16(金) 14:49 -

引用なし
パスワード
   そうか・・・
合計を出す関数は一つじゃないもんね。
期待する答になるのは、難しいかも・・・

【52518】Re:セル内容が式かどうか調べる方法
発言  Jaka  - 07/11/16(金) 15:26 -

引用なし
パスワード
   大雑把にこんな程度じゃないのかなぁ?

STT = "不正解。"
If Not IsError(Range("A11").Value) Then
  St = Range("A11").Formula
  If InStr(1, St, "SUM") > 0 Then
   ans = Application.Evaluate(St)
   If ans = Application.Sum(Range("A1:A10")) Then
     STT = "正解かも。"
   End If
  End If
End If
MsgBox STT

【52522】ありがとうございます。
お礼  トキ E-MAIL  - 07/11/16(金) 20:51 -

引用なし
パスワード
   レスありがとうございました。
とりあえず全部使えそうです。助かりました。
全部、知らない単語だったので進歩あり!
(hasformula iif Not IsError)

たしかに、絶対アドレス、オフセットなど奥深いようです。
まあ今回は、初級レベルなのでなんとかなりそうです。

お世話様でした。

5122 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free