![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
文字列(数値が他の文字と混在して入力されている)のセル内容に空白を見つけて、空白の前の文字(データによって1~4桁、実際は数字)を表示したいので、下記のようにしました。
結果、『SEARCH(" "』の空白を指定する『"』でエラーになってしまいます。
このエラーを回避する方法を教えて下さい。
Range("J12").FormulaR1C1 = "=mid(r[8]c[-5],SEARCH(" ",r[8]c[-5],6)-5),4)"
セルデータの例
1: 52 ABCD EFGH(AAA)
6: 823 JYUGF JKLM (B)
『:』までには半角空白が2個、次に半角数字が1桁、
次に半角空白があり、次の半角空白までに数字1桁から4桁があります。この数字を取り出したいのです。
宜しくお願いします。
No.3
- 回答日時:
●他人のことをとやかく言うのも出すぎかも知れないし、それなりの理由があり意識的に使っておられるのかもしれないし、質問の回答と違うことなのですが、、R1C1形式の使用をやめるのはどうですか。
エクセルの過去4年のVBAの質問から推測しても、ほとんどA1形式を使用してるようです。
またCells(i,j)方式は便利です・
●またVBAでなら、
(1)セルに関数式を設定するFormulaを使わず
(2)ワークシート関数のSEARCH・Findを使わないで、
(3)Instrを使い、含まれてなければエラーにならず、値が0になるので判別できます。
●本質問では、数字がどうか調べの開始桁は固定しているようなので、その数字がある可能性のある桁から、4桁(または半角空白まで)、1桁ずつIsNumericかどうかをIfで聞くとかにする方法もあります。関数に頼らないVBらしい方法です。
はい、平常はR1C1形式は使用していないのですが、いろいろと試行錯誤でここのルーチンだけR1C1を使用してみようかなと思ったのですが、A1形式でも考えます。
instrを使うことも考えてみます。ただ必ず半角の空白がいくつか、それに半角の数字が羅列されているその中からある部分の数字が欲しかったので、安直に流れたのかもしれません。
IsNumericの方法もあるのですね!これから考えて見ます。
ありがとうございます
No.2
- 回答日時:
こんにちは。
数式だったら、一般、Office で、VBAとは違うと思いますが、式を作って、記録マクロで、再度、Enter をすれば、取れると思います。
R1C1側は、コメントアウトしています。
VBAとしては、ちょっと可読性が落ちますね。
Sub testSample1()
Range("J12").FormulaLocal = "=MID(E20,FIND("":"",E20)+2,FIND(""^"",SUBSTITUTE(E20,"" "",""^"",4))-FIND("":"",E20)-2)"
'Range("J12").FormulaR1C1 = "=MID(R[8]C[-5],FIND("":"",R[8]C[-5])+2,FIND(""^"",SUBSTITUTE(R[8]C[-5],"" "",""^"",4))-FIND("":"",R[8]C[-5])-2)"
End Sub
しかし、VBAだったら、そのまま、VBAのコードで出力するか、以下のようなユーザー定義関数でよいと思います。
Function GetNumber(ByVal s As String) As Variant
Dim i As Integer
Dim buf As String
For i = 1 To Len(s)
If IsNumeric(Mid(s, i, 1)) Then
buf = Trim$(Mid(s, i + 2))
buf = Mid$(buf, 1, InStr(buf, " "))
Exit For
End If
Next i
GetNumber = Trim$(buf)
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) エクセルの数式で教えてください。 2 2022/04/01 09:10
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- PDF C#でfloatを整数部、小数部とも桁数固定で文字表示したい 2 2022/07/28 09:37
- Excel(エクセル) Excel 特定セルの数値を参照したセルの0表示が空白にならないのはどうしてか? 3 2022/04/28 22:23
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現 文中空白可能
-
なぜインターネットでは半角カ...
-
全角英数文字が嫌われる理由を...
-
全角半角変換 C++/CLI
-
文字の入力で横バー上段、中断...
-
VBAのコマンドボタンの文字列の...
-
awkの BEGIN{RS=""} で空行を削...
-
fputsで改行できない
-
PHPで<a>タグ内からURLと文字を...
-
ソースコードの1行が長いとき...
-
コンボボックスの項目中に改行を
-
「続行するには何かキーを押し...
-
タグにはさまれている文字以外...
-
VBA テキストボックスの行数取得
-
SQL Serverで文字コードUTF-8
-
正規表現で記号 & アンドの検索...
-
正規表現で特定のHTMLタグのク...
-
PHPで変数から1行目だけを取得...
-
テキストファイルから改行コー...
-
ファイルから読み取った改行文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
メッセージボックスで1025文字...
-
文字の入力で横バー上段、中断...
-
Excel関数「COUNTIF」で”文字”...
-
エクセルのCOUNTIFが正しくカウ...
-
全角括弧と全角読点の間隔を狭...
-
半角記号、全角記号を含む正規...
-
特定の文字を簡単な操作で半角...
-
全角英数文字が嫌われる理由を...
-
VBAで英数字入力チェックしたい。
-
エクセルでの漢字、カタカナ、...
-
全角半角変換 C++/CLI
-
XMLのタグ名の禁則文字
-
VBScriptである文字列に半角文...
-
記号は半角と全角どちらがよい...
-
文字列中の両丸括弧を取り除くV...
-
パソコンで全角、半角文字の切...
-
HTML5の「pattern」属性で前後...
-
Replace関数は文字数の制限ある...
-
Excel2002 一桁数字だけ全角に置換
-
エスケープ文字にstr_replaceが...
おすすめ情報