No.6ベストアンサー
- 回答日時:
No.1です。
No.1の補足欄について。
Ifの条件のIsNumericのところを以下のように変更して下さい。
IsNumeric(Mid(temp, 2, Len(temp) - 2))
↓
IsNumeric(Mid(temp, 2, Abs(Len(temp) - 2)))
No.11
- 回答日時:
Debug.Print "a123a" Like "a[0-9][0-9][0-9]a"
Debug.Print "a12a" Like "a[0-9][0-9]a"
Debug.Print "a1a" Like "a[0-9]a"
とすれば違います?
aのところを変えて or でつなげばよいのでは?
皆さん回答有難うございました。
解決しました。
質問を出す一義は解決するか如何かですが、それに付随する回答の方が役に立つ事もあるのも事実です。ですから質問から派生した回答を頂けるのも有難いです。
(要は質問が煮詰まってないという事もありますが。。。)
No.10
- 回答日時:
No.1、5、6です。
No.7に対して。
No.5の回答を読み直してみると、かなり失礼な書き方をしているように思えました。
その点は、まず謝りたいと思います。
それから、後半の既出回答うんぬんの件ですが、ちょっと表現の仕方が悪かったようです。
既出回答を流用して、かつご自身の新しい情報を付加すること自体を言っているのではありません。
まるで、それまでの回答が存在しないかのように書くのが、どうか?と思うのです。
それで、既出回答をあまりご覧になっていないという風に思えたのです。
(いつもではないです、もちろん。)
一言「既出ですが」のように添えられたら、と思います。
imogasiさんの(特にVBAの)回答はすばらしいので、ちょっと残念に思っていました。
もう一度、No.5の言い方は失礼でしたので、謝罪します。
これでお気を悪くされずに、ますますすばらしい回答をされていかれることを、切に願います。
あと、質問者さんには、関係ないことで場所を取って申し訳なかったです。
No.9
- 回答日時:
#8訂正します
●数字チェック
○小数点を考慮する
IsNumericでチェック(NO1さんロジック)
○小数点を考慮しない
1文字分ループで"0123456789"にあるかどうかを調べます(InStrでチェック)
No.8
- 回答日時:
単純に
"【"と"】"があって、その中身が数字"0123456789"であるセルでよいのでしょか?
●"【"と"】"のチェック
"【"と"】"があるかはInStrです
逆パターン("】123【")、
文字が無いがない("【】")のチェックが必要であればチェックしましょう
●数字チェック
1文字分ループでIsNumericで調べますたら良いですが、"."も数字となるので、"0123456789"にあるかどうかを調べます
これもInStrでOK
(小数点考慮ならIsNumericでOKです)
これでどうでしょうか?
※上記仕様は"AA【0123】BBB"も対応できるますが、そこまで必要で無ければNo1さんのロジックでOKです
※お願い
具体例がないので、みんな混乱していると思いますよ
No.7
- 回答日時:
#3から#5のご意見に対し、
>No.2の方の回答(つまり私の回答)を訂正する意図がまったくもって不明です。
#2のご回答を「訂正」する意図は全くありませんでした。
質問を読んで、文章の意味が判らなかったから、#3を書いて、まあその(1)かなと推測して、思い直して#4を
上げました。
>都合のよいものだけのような気がしますが
今考えると【】に囚われてしまって、中の数字だけ抜き出すことに目が行って、ロジックが不完全でしたね。済みません。ただ【】が前後に必ずあると言う前提(そういうケース)なら使えるかも。上げた例は悪いが。訂正版
Sub test01()
For i = 1 To 4
s = Cells(i, "A")
If Left(s, 1) = "【" And Right(s, 1) = "】" Then
n = Mid(s, 2, Len(s) - 2)
If IsNumeric(n) Then
MsgBox "数字です"
Else
MsgBox "数字でない"
End If
Else
MsgBox "【】がない"
End If
Next i
End Sub
>回答する際は、既出回答を全部確認してから投稿することを勧めます。
完全とはいかないですが、見てます。
>既出とかぶる回答が多すぎますよね?
私は中身(回答のコアになるやり方など)ばかりで、回答をしないするを考えてません。勿論それが大きいですが、説明の表現とかにおいても、質問者に役立ちそうだと思えば、自分が回答を書きたかったら入れているのもあります。そういう主義です。
そういうのが、為になったかどうかは、ご質問者が評価するのではないですか。またそういうタイプの回答は、そこは質問者がよく考えていて、評点対象外に評価(即ち評価されない)されたりされているケースが多いですね。
いつも鋭く深い内容のご回答を上げられているおられて、ご尊敬しているmaruru01さんに言われるのは残念ですが、当方浅学ですが、まあ好きで時間を奉仕して回答をあげているOKWEBですので、今後ともよろしく。
ご質問者には、済みません。
No.5
- 回答日時:
No.1です。
No.4のimogasiさんへ。
>(1)を(1)【123】のような【】で前後を囲まれた数値のセル
>と解釈して
理解出来ません。
No.2の方の回答(つまり私の回答)を訂正する意図がまったくもって不明です。
No.4のコードでは、
「a123」
「123b」
「1234」
「<123>」
も全部OKになります。
データ例は、都合のよいものだけのような気がしますが。
わざわざ、前後の「【」「】」の判定を省略したのはどういうつもりなんでしょうか?
ついでに、もう一言。
回答する際は、既出回答を全部確認してから投稿することを勧めます。
(既出とかぶる回答が多すぎますよね?)
No.4
- 回答日時:
#3です。
#2を訂正。(1)を(1)【123】のような【】で前後を囲まれた数値のセル
と解釈して
Sub test01()
For i = 1 To 4
n = Mid(Cells(i, 1), 2, Len(Cells(i, 1)) - 2)
If IsNumeric(n) Then
MsgBox "数字です"
Else
MsgBox "数字でない"
End If
Next i
End Sub
データ例
【12343】
12 --->アポストロフィつき
ad
【123s】
1だけ「数字です」
No.2
- 回答日時:
#1さんの大部分流用ですが(笑)
一応、複数個あるところから抽出するように見えるので、ループ加えてみました。
ループ終点の65536は好きな数字で(笑)
列方向にも検索するなら、Cells(intI, 1)の1を変数にして、ループを二重にまわしてください。
* * * * * * * * * * * * * * * * * * * * * * *
'A列を検索
For intI = 1 To 65536
temp = Cells(intI, 1)
If temp <> "" Then
If Left(temp, 1) = "【" And _
Right(temp, 1) = "】" And _
IsNumeric(Mid(temp, 2, Len(temp) - 2)) Then
res = MsgBox("行 = " & intI)
End If
End If
Next intI
この回答への補足
回答有難うございます。
早速試してみたのですが、1さんと同じくセルが1字のときエラーになるみたいです。
何とかならないでしょうか。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Visual Basic(VBA) 列を指定して値を左から5文字にそろえる 1 2022/06/10 20:28
- Excel(エクセル) Excelの文字列を転記したいのですが。 2 2022/09/30 12:09
- Excel(エクセル) エクセル ご教授ください 例えば、対象セルに、 =IF(U31=10000,0,AS31✖️1350 15 2023/04/21 13:43
- Excel(エクセル) エクセルでセルに何らかの文字が入力されたらそれを任意の数値として認識させる方法がしりたいです。 3 2023/03/16 20:19
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) エクセルのVBAの標準モジュールの名前が文字化けしてしまうのですが。。 2 2022/11/28 16:34
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
範囲指定したセルを1つずつ飛...
-
画面を強制的に再描画させる方法
-
GIFアニメをループさせたくない
-
ループの後判断どんな時使うの
-
CSVファイルの特定の行だけを読...
-
スリザーリンクの問題をランダ...
-
ループフリー
-
エクセルの当番表を作っていま...
-
一巡伝達関数と開ループ伝達関数
-
vb.netです。2次元配列の要素を...
-
ネットワークループとルーティ...
-
Do文を使い方について
-
乱数の桁数指定、または範囲指定。
-
VB2010でCSVファイルの読み込み
-
VBAでの一時停止と再開の方法
-
「偶数・奇数の和」のフローチ...
-
ListBox 複数選択 で オートフ...
-
ダイアログのテキストにマウス...
-
UWSCのスクリプトで行き詰って...
-
Delphi for文
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
流れ図(フローチャート)が分か...
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
VBAでの一時停止と再開の方法
-
乱数の桁数指定、または範囲指定。
-
VBA for i=1 to lastrow
-
VBAで3秒だけ時間を止めたい
-
vb.netです。2次元配列の要素を...
-
エクセルの当番表を作っていま...
-
vb.netからエクセル関数書き込み
-
DOSコマンドのループ内のTIMEコ...
-
「偶数・奇数の和」のフローチ...
-
GIFアニメをループさせたくない
-
Do whileでExitせず、ループの...
-
VB2010でCSVファイルの読み込み
-
【VBA】全て空白のセルの列の非...
-
アクティブセルから、A列最終行...
おすすめ情報
