pickup

目次

メルクマール

こんにちは。伊川(@naonaoke)です。

よく、小池百合子さんが、メルクマールという言葉を使っていました。

メルクマールはドイツ語の「merkmal」を語源とするカタカナ語です。

ドイツ語「merkmal」は「気づく」という「merken」の複合語です。

物事を見分ける時に手がかりとなる特徴や特性、判断するための指標や目印のことです。






文字抽出に関しては、上の記事も参考にしてください。

 

問題提起

(株)IKAWAの柄久 瀬瑠子(エク セルコ)は、

競馬好きの上司から、下記の依頼を受けました。

セルの中から、競走馬の馬名だけを抽出してほしい。

ふざけるな!と思いましたが興味がわいてきました。

どのように、抽出するのか?

解決策

回答
sesuo2.jpg
・ExcelデータにVBAで目印(メルクマール)を意図的につけて、抽出する

 

 

文字抽出の考え方

ExcelをVBAで操作していると、何か目印があればと思うことがたくさんあります。

その時には、意図的に目印(メルクマール)を作成することです。

考え方を柔軟にすることによって、様々なコードが書けるようになります。

文字抽出 作成手順その1 データベース確認


上の図のように、カタカナの馬名を抜きたいのです。


文字抽出の手がかり
・文字は、左から始まっている。
・始まりは、数字が33文字である。
・馬名に関しては、ランダムのカタカナの組み合わせである。

 

文字抽出 作成手順その2 想像するVBAのコード

VBAのコードを組み立てる過程
・文字は、左から始まっている⇒LEFT関数を使うと想定する。
・始まりは、数字が33文字である⇒文字列の中から抽出するので、
 MID関数を使うと想定する。
・文字列の操作といえば⇒InStr関数を利用すると想定する。


では、意図的に空白を入力しましょう。

文字抽出 作成手順その3 VBAのコード


Sub 名前抽出()


Dim d As Long
maxrow4 = Cells(Rows.Count, "A").End(xlUp).Row

For d = 1 To maxrow4

Cells(d, 1) = Cells(d, 1) & " " '半角入れる
Cells(d, 3) = Mid(Cells(d, 1), 33, InStr(Cells(d, 1), " ") - 1) '馬名抽出

Next d
End Sub

文字抽出 作成手順その4 完成図


ここがポイント

ここがポイント
Function8.png
不規則な文字列でも、あきらめてしまうとそこで終わりです。しかし、何等かの規則性を見つけることです。規則性がなければ、規則性を作成することで、文字列は操作できます。文字列操作の場合には、InStr関数が、絶対といっていいほど活躍します。InStr関数は絶対に覚えておきましょう。

 

まとめ

今回のまとめ
sesuko3.jpg
今回は、見事に馬名だけを抽出できて、
上司に褒められた柄久 瀬瑠子(エク セルコ)なのでした。。

伊川
この書籍は、本当に良い本です。
この本を熟読すれば、伊川くらいのスキルはすぐ、つきますよ。
TwitterからのDM
突然のDM失礼致します。
伊川さんが以前、YouTubeで紹介されていた『仕事に役立つExcelデータベース』を購入しました。
紹介の通り、良書で初級の私でもわかりやすく理解できています。
これからもExcelやVBAの情報発信をしてくださればと思います。
ありがとうございました。

 

ご視聴者様からのコメント

今日は、この動画を拝見しました^^
空白文字をいれてそこまでの数を取得する、面白い方法だと思いました。
左側の数字が一定でないなら、こんな方法も考えてみました^^
文字をひとつずつ探って、Likeを使って数字の部分だけ削除するという方法です
Sub 名前抽出2()

    Dim maxRow As Long

    Dim d As Long

    Dim buf As String, RightStr As String, i As Long

 maxrow4 = Cells(Rows.Count, "A").End(xlUp).Row

 For d = 1 To maxrow4

    buf = Cells(d, 1)

        For i = 1 To Len(buf)

            If Mid(buf, i, 1) Like "#" Then

                RightStr = Mid(buf, i + 1)

            End If

        Next i


    Cells(d, 4) = RightStr

 Next

End Sub

 

 

今回のサンプルファイルは、No94です。

毎日の業務が、3時間短縮できます

わからない事を延々と考えるのは、無駄です。

  • なんで作動かないの?
  • もうやだ!VBAなんか嫌い!
  • ネットで調べても情報がない!

必ず作動するコードが、ここにあります。

スポンサーリンク

Twitterでフォローしよう

おすすめの記事