人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBAについてお尋ねします。
2つの任意の文字列を比較して、特定の記号(例えば○など)の部分に書かれている文字列を抽出するマクロ(関数でもOKです)を探しています。

具体例
?A1に「ABCDEF○MN」という文字列をあらかじめ入力しておく
?B1に「ABCDEFGHIJKLMN」という文字列を入力
?マクロを実行。
?C1に「GHIJKL」が表示される

文字で説明するのは難しかったので図を用意しておきました。
http://hatena88.web.fc2.com/excel.html

実際に動くマクロを作っていただくとうれしいです。
以上よろしくお願いします。

●質問者: taroemon
●カテゴリ:コンピュータ
✍キーワード:?B A1 Mn VBA エクセル
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●40ポイント

Function chk(a1 As String, a2 As String) As String

Dim b1 As Long

Dim a3 As String

b1 = InStr(a1, "○")

a3 = Left(a2, b1 - 1)

a3 = a3 & Right(a2, Len(a1) - b1)

chk = a3

End Function


標準 Module1 に上記を記述し、

使い方は、

=chk(A1,B1)

という感じで、セルに入れます。

A1が○がついた文字列ですね。

◎質問者からの返答

ご回答ありがとうございます。

試してみます。


2 ● きゃづみぃ
●10ポイント

あ、逆でしたね。

Function chk2(a1 As String, a2 As String) As String

Dim b1 As Long

Dim b2 As Long

b1 = InStr(a1, "○")

a3 = Mid(a2, b1, Len(a2) - Len(a1) + 1)

chk2 = a3

End Function

こうすれば 中身だけです。

◎質問者からの返答

「コンパイルエラー END SUB」が必要ですと言われてしまいました。

おそらく回答者さんにとっては説明不要の部分ということで、

省略されたのだと思いますが、当方初心者ですので、

どうすればよいか教えていただくか、

上記に変わるプログラムを作っていただけるとうれしいです。


3 ● りくっち
●50ポイント

この内容なら既存の関数で処理ができると思います。

例示の通りの設定として、

C1=MID(B1,FIND("○",A$1),LEN(B1)-FIND("○",A$1)-(LEN(A$1)-FIND("○",A$1)-1))

以下フィルコピー可です。


これは参照するA1が固定の場合として作成していますので、

固定でない場合は「$」(絶対参照)を取って使ってください。

◎質問者からの返答

ご回答ありがとうございます。

これ以上ないというくらい完璧でした。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ