お世話になります。
excelのシートのセルに以下のような情報が記述されています。
”■(設定A) □(設定B)”
※■がこの場合の設定の対象、□は対象ではない。(チェックボックスの代わりに使用)
このような情報が1つのセルにあった場合に、■がある方の()の中の設定のみを読み取って以降の処理で活用していきたいのですが、どのようにして判別したらよいのでしょうか?お力を貸していただけると大変助かります。
多くの回答ありがとうございます。いろいろと試行錯誤しながら考えていますのでベストアンサーは今しばらくお待ちいただければと思います。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
正規表現でマッチングさせてはどうでしょうか
vbscript
1 2Dim regEx, matches As Object 3Set regEx = CreateObject("VBScript.RegExp") 4 5regEx.Pattern = "■\(([^\)]*)\)" 6 7Set matches = regEx.Execute("■(設定A) □(設定B)") 8Debug.Print matches(0).submatches(0) ' ⇒ 設定A 9Set matches = regEx.Execute("□(設定A) ■(設定B)") 10Debug.Print matches(0).submatches(0) ' ⇒ 設定B
投稿2016/11/09 09:46
編集2016/11/09 09:48総合スコア246
0
ベストアンサー
入力された文字列のレイアウトが多少崩れていても取得できるよう、取得したい条件をそのままロジックにしてみました。
最初に見つけた■から次の□の前までを選択項目として取得する方法となっています。
Sub test() Dim strInput As String Dim strVal As String Dim iPos As Integer strInput = Sheets("Sheet14").Cells(2, 2) iPos = InStr(strInput, "■") If iPos = 0 Then '■は見つからなかった Exit Sub Else 'とりあえず見つけた位置以降の文字列を取得 strVal = Mid(strInput, iPos + 1) '次の□を検索 iPos = InStr(strVal, "□") If iPos > 0 Then '見つかった場合は□以降を除去 strVal = Mid(strVal, 1, iPos - 1) End If '念のため■も残っていないか検索 iPos = InStr(strVal, "■") If iPos > 0 Then '見つかった場合は■以降を除去 strVal = Mid(strVal, 1, iPos - 1) End If End If '括弧外に余分なスペースがあれば除去 strVal = Trim(strVal) '前後の括弧を除去 strVal = Mid(strVal, 2, Len(strVal) - 2) MsgBox strVal End Sub
参考になれば幸いです。
投稿2016/11/09 12:48
総合スコア3013
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
”■(設定A) □(設定B)” のフォーマットを崩さない前提で、セルA1に入っているとして。
Sub test() Arr = Split(Range("A1").Value, " ") If Left(Arr(0), 1) = "■" Then Shori = Mid(Arr(0), 2) Shori = Replace(Shori, "(", "") Shori = Replace(Shori, ")", "") ElseIf Left(Arr(1), 1) = "■" Then Shori = Mid(Arr(1), 2) Shori = Replace(Shori, "(", "") Shori = Replace(Shori, ")", "") End If Msgbox Shori End Sub
やっつけで済みません。
同じ処理をしている部分は関数化するとか工夫の余地はありますね。
投稿2016/11/09 08:50
総合スコア1894
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。