見出し画像

【Day55】文系オタクのエンジニア道~問題演習⑧-2~

こんにちは
安田です

なんだか急に暑くなりましたよね
スマートウォッチの気温だと
32℃!!

いや、夏ですやん
この前、雨がー#梅雨がー
って記事をアップしたのが
嘘のように・・・

まだ暑さに慣れていないですが
粛々と#VBAの学習も進めます



大文字、小文字に変える

A列に入っている文字列を小文字にする

パターン①  LCase(文字列)

Sub test1()
    Dim i As Long
    For i = 1 To 3
        Cells(i, 2) = LCase(Cells(i, 1))
    Next i
End Sub


パターン② StrConv(文字列, vbLowerCase)

Sub test2()
    Dim i As Long
    For i = 1 To 3
        Cells(i, 2) = StrConv(Cells(i, 1), vbLowerCase)
    Next i 
End Sub

文字列のスペースを削除するTrim関数ほか

Trim関数
引数に指定した文字列の両端にあるスペースを削除する

LTrim関数
引数に指定した文字列の左端にあるスペースのみを削除する

RTrim関数
引数に指定した文字列の右端にあるスペースのみを削除する

Replace関数
引数に指定した文字列を置換する


文字列を検索して文字の位置を指定するInStr関数


A列に入力されている文字列に「a」の文字がある場合
対象の文字列がB列に表示したい

回答コード

Sub Test3()
    Dim i As Long, j As Long
    j = 1
    For i = 1 To 6
        If InStr(Cells(i, 1), "a") > 0 Then
           Cells(i, 1).Copy Cells(j, 2)
           j = j + 1
        End If
    Next i
End Sub

InStr関数
引数に指定した文字列において
指定した文字列を先頭から検索して
最初に見つかった文字の位置を取得する

A列に「a」がある場合「1」を返す
→A1・A4・A5が該当する

それ以外のセルは「a」がないため「0」が返ってくる

「1」のものをB列に表示する


StrConv関数の使い方

コードから
出力結果を回答する

Sub Test1()
    Dim A As Variant
    A = Trim(Range("A1"))
    A = Mid(A, InStr(A, "c") + 1, 3)
    MsgBox A

End Sub

まず、Trim関数で「abcdefghijk」の両端のスペースを削除し、「abcdefghijk」を変数Aに格納します。

次に、InStr関数で変数Aに格納されている「abcdefghijk」より、「c」の位置「3」を取得します。

そして、Mid関数で変数Aに格納されている「abcdefghijk」より、「3+1」で4番目の位置「d」から3文字「def」を取得します。

https://vba-workbook.com/excel-vba-basic/7012-2
メッセージボックスに表示されるもの

StrConv(文字列, 文字の種類)

文字の種類
vbWide
半角の「アルファベット」「記号」「数値」を全角に変換する

vbNarrow
全角の「アルファベット」「記号」「数値」を半角に変換する

vbLowerCase
文字列にある大文字を小文字に変換する

vbUpperCase
文字列にある小文字を大文字に変換する


まとめ

正答率 42%
7問中3問正解

文字の種類は中々に豊富でした

暑くなってきましたので
水分補給をしっかりと!


VBAマスターに俺はなる

最後まで読んでいただき
ありがとうございます
安田

マガジンにまとめてありますので
よかったらそちらも御覧ください


#66日ライラン
ライラン 9日目

いいなと思ったら応援しよう!