- ベストアンサー
一部の文字を抜き出す関数
「$h$789」の文字列から「789」のみ抜き出すモジュール関数を教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
アクティブセルの行番号って、もしかしてactivecell.rowプロパ ティのことかな。 そもそもactivecell.rows.countは選択範囲の行数のはずなのに、な ぜ$h$789なんてセル参照みたいな文字列になるのか、理解出来ない けど。 マクロは苦手だから一般人。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
モジュール関数とあるので、VBのことだとして Sub test01() p = InStrRev(Range("A2"), "$") MsgBox p MsgBox Right(Range("A2"), Len(Range("A2")) - p) End Sub を参考にしてください。 例 $1234$23456 6 23456 と表示あします。
お礼
ご回答ありがとうございました。
補足
質問の仕方が悪くて申し訳ありませんでした。 今エクセルのワークシートでコマンドボタンを作ろうとしています。 モジュール画面のコードでボタンを押すと、まずデータの最終行に飛ぶようにしました。 次にアクティブセル(変動します)の行番号だけを抜き出して変数として扱いたいのです。 ActiveCell.Rows.Countで、たとえば$h$789などと確定されるのですが、そこから789だけを取り出す方法を知りたいと思います。 たとえば「2番目の$を検索してそこから後を抜き出す」あるいは「右端から$の直前まで抜き出す」というような関数の組み合わせ(もっと効率良いものがあればそちらのほうが助かりますが)は無かったでしょうか。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
Excelの関数の話をしていると仮定します。A1に文字列$h$789がある として、$h$789がセル参照に見えることを利用して、 =row(indirect(A1))
お礼
質問の仕方が悪くて申し訳ありませんでした。 今エクセルのワークシートでコマンドボタンを作ろうとしています。 モジュール画面のコードでボタンを押すと、まずデータの最終行に飛ぶようにしました。 次にアクティブセル(変動します)の行番号だけを抜き出して変数として扱いたいのです。 ActiveCell.Rows.Countで、たとえば$h$789などと確定されるのですが、そこから789だけを取り出す方法を知りたいと思います。 たとえば「2番目の$を検索してそこから後を抜き出す」あるいは「右端から$の直前まで抜き出す」というような関数の組み合わせ(もっと効率良いものがあればそちらのほうが助かりますが)は無かったでしょうか。
補足
ご回答ありがとうございました。 ご推察のとおりセルの絶対番地です。 解答欄と補足欄を逆に入力してしまい申し訳ありません。
- maron--5
- ベストアンサー率36% (321/877)
◆こんな方法もありますよ =LOOKUP(10^10,RIGHT(A1,COLUMN(1:1))*1)
お礼
ご回答ありがとうございました。
補足
質問の仕方が悪くて申し訳ありませんでした。 今エクセルのワークシートでコマンドボタンを作ろうとしています。 モジュール画面のコードでボタンを押すと、まずデータの最終行に飛ぶようにしました。 次にアクティブセル(変動します)の行番号だけを抜き出して変数として扱いたいのです。 ActiveCell.Rows.Countで、たとえば$h$789などと確定されるのですが、そこから789だけを取り出す方法を知りたいと思います。 たとえば「2番目の$を検索してそこから後を抜き出す」あるいは「右端から$の直前まで抜き出す」というような関数の組み合わせ(もっと効率良いものがあればそちらのほうが助かりますが)は無かったでしょうか。
=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),5)
お礼
ご回答ありがとうございました
補足
質問の仕方が悪くて申し訳ありませんでした。 今エクセルのワークシートでコマンドボタンを作ろうとしています。 モジュール画面のコードでボタンを押すと、まずデータの最終行に飛ぶようにしました。 次にアクティブセル(変動します)の行番号だけを抜き出して変数として扱いたいのです。 ActiveCell.Rows.Countで、たとえば$h$789などと確定されるのですが、そこから789だけを取り出す方法を知りたいと思います。 たとえば「2番目の$を検索してそこから後を抜き出す」あるいは「右端から$の直前まで抜き出す」というような関数の組み合わせ(もっと効率良いものがあればそちらのほうが助かりますが)は無かったでしょうか。
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 Excelでは、モジュール関数という呼び名があるのか、私は知りません。 =MID(A1,MATCH(FALSE,INDEX(ISERR(MID(A1,ROW($A$1:$A$100),1)*1),,),0),256) ユーザー定義関数にするなら、 Function PickUpNum(ByVal arg As Range, Optional sw As Boolean = True) As Variant 'PickUpNum セル, オプション[True/False] Dim i As Integer Dim buf As Variant For i = 1 To Len(arg.Value) If IsNumeric(Mid(arg.Value, i, 1)) = sw Then buf = buf & Mid(arg.Value, i, 1) End If Next i PickUpNum = buf End Function =PickUpNum(A1)
お礼
ご回答ありがとうございました。 何しろ素人なので過分なご教授をいただき恐縮しております。 参考にできるように頑張ります。^^;
補足
質問の仕方が悪くて申し訳ありませんでした。 今エクセルのワークシートでコマンドボタンを作ろうとしています。 モジュール画面のコードでボタンを押すと、まずデータの最終行に飛ぶようにしました。 次にアクティブセル(変動します)の行番号だけを抜き出して変数として扱いたいのです。 ActiveCell.Rows.Countで、たとえば$h$789などと確定されるのですが、そこから789だけを取り出す方法を知りたいと思います。 たとえば「2番目の$を検索してそこから後を抜き出す」あるいは「右端から$の直前まで抜き出す」というような関数の組み合わせ(もっと効率良いものがあればそちらのほうが助かりますが)は無かったでしょうか。
お礼
再度のご回答ありがとうございました。 activecell.rowが単独で使えるとは知りませんでした。(^^;;;;; とんでもない大回りをしようとしていたみたいです。 これだから素人はこわいですよね。 大変助かりました!!! 他の方々もご苦労おかけしてすみません。 この場をお借りして皆様にお礼申し上げます。