[[20220815093419]] 『A2セルの値が「100021_りんご01青森県」からInStr』(たかこ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『A2セルの値が「100021_りんご01青森県」からInStrで「りんご」を抽出したい。』(たかこ)

セルの値が「100021_りんご01青森県」のような並びで「_」より右「01」より左の「りんご」を切り出したい。
下記コードで「_」より右は切り出せますがこのコードを代えて切り出すことは可能でしょうか?ご指南のほどよろしくお願いいたします。
・・・・・・・・・・・・・・
Dim N As Long
Set cel = wbk.Worksheets("Sheet3").Cells(2, 1)
N = InStr(cel, "_")
cel.Offset(-1, 1) = Mid(cel, N + 1)

< 使用 Excel:Office365、使用 OS:Windows10 >


更に、0の位置を調べて、Leftで切り出すとかでも

(隠居Z) 2022/08/15(月) 09:45


 こんな感じでせうか。。。^^
ブックは解りませんので、テストマクロが有るブックにしました。
Option Explicit
Sub sss()
    Dim wbk, mStr$
    Set wbk = ThisWorkbook
    With wbk.Worksheets("Sheet3").Cells(2, 1)
        mStr = .Value
        mStr = Mid(mStr, InStr(mStr, "_") + 1)
        mStr = Left(mStr, InStr(mStr, "0") - 1)
        .Offset(-1, 1) = mStr
    End With
End Sub
(隠居Z) 2022/08/15(月) 10:13

>「_」より右「01」より左
アンダーバーはともかくとして”01”も固定なんでしょうか?
    Sub テキトー()
        Const 文字列 As String = "100021_りんご01青森県"
        Dim buf As String
        Dim 区切壱 As String, 区切弐 As String
        区切壱 = "_"
        区切弐 = "01"

        buf = Split(文字列, 区切壱)(1)
        buf = Split(buf, 区切弐)(0)

        Debug.Print buf
    End Sub

(774) 2022/08/15(月) 10:56


01は固定ではありませんでした。
気が付きませんでしたが「02」「03」「04」がありました?
どうしましょう?ご教示いただけるとたすかります。
(たかこ) 2022/08/15(月) 14:34

>「02」「03」「04」がありました?
聞かれても知りませんが、全部"0"がついてるならそれを使えばよいかと。

(774) 2022/08/15(月) 15:17


区切弐 = "01"

"0"
にすれば。。。^^;
私のはゼロできりだしていますので、そのままでOKだと思いますよ。
45
とか
156とかもあるのですか。^^
m(__)m

(隠居Z) 2022/08/15(月) 15:34


追加質問 ^^;
A2だけではなしに、a列にa2以降ず〜〜〜と
変換する文字列があるのですか。
(隠居Z) 2022/08/15(月) 15:44

    Sub test()
        With Worksheets("Sheet3").Cells(2, 1)
            .Offset(-1, 1).Value = .Value
            .Offset(-1, 1).Replace "*_", "", LookAt:=xlPart
            .Offset(-1, 1).Replace "0*", "", LookAt:=xlPart
        End With
    End Sub
(774) 2022/08/15(月) 17:15

前スレ
[[20220814154746]] 『セルの値を切り出したい』(たかこ)

 (1)と(3)と(5)を切り出したいということでしょうか。

 数字6桁  _  文字列(果物名) 数字2桁 文字列(都道府県名)
 ~~(1)~~   (2)   ~~~~~~(3)~~~~~    ~~(4)~~  ~~~~~(5)~~~~~~~~~~

(マナ) 2022/08/16(火) 13:17


正規表現を見様見真似で。

 Sub コード商品切り出し()
    Dim fdg As FileDialog, p As String
    Dim re As Object, m
    Dim ws As Wrksheet, s As String, r As Range

    Set fdg = Application.FileDialog(msoFileDialogFolderPicker)
    If Not fdg.Show Then Exit Sub

    p = fdg.SelectedItems(1) & "\"
    fn = Dir(p & "*xlsx")

    Set re = CreateObject("vbscript.regexp")
    re.Pattern = "^(\d{6})_(\D+)\d{2}(\D+)$"

    Do While fn <> ""
        Set ws = Workbooks.Open(p & fn).Worksheets("Sheet3")
        s = ws.Range("A2").Value
        Set r = ws.Range("B2,B1,C1")    '★書き出し位置・順番?
        r.ClearContents

        If re.test(s) Then
            Set m = re.Execute(s)(0).submatches
            r.Areas(1).Value = m(0)
            r.Areas(2).Value = m(1)
            r.Areas(3).Value = m(2)
        End If

        ws.Parent.Close True
        fn = Dir() 
    Loop

 End Sub

(マナ) 2022/08/17(水) 18:34


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.