ららぽてすらブログ

ららぽてすら

昨日会社で使ったVBA紹介します🚀

こんにちは〜ららぽてすらです!

昨日会社で使ったVBA紹介します♪

Sub CompareColumns()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet9") ' シートの名前を適切なものに変更してください
    
    Dim i As Long, j As Long
    Dim mValues As Variant

    For i = 1 To ws.Cells(ws.Rows.Count, "H").End(xlUp).Row
        mValues = Split(ws.Cells(i, "M").Value, " ") 'M列の値をスペースで区切ります
        
        For j = LBound(mValues) To UBound(mValues)
            If ws.Cells(i, "H").Value = mValues(j) Then
                ws.Cells(i, "J").Value = mValues(j) & ", " & ws.Cells(i, "N").Value
                Exit For ' 一致する値が見つかったら、それ以上チェックしない
            End If
        Next j
    Next i

End Sub

2社のデータで共通のものを同じシートに貼り付けて揃えたい会社の方のデータに合わせてもう一社のデータを並び替えてそれに応じて紐づいていた隣のデータを横につける操作をしてます。

このVBAVisual Basic for ApplicationsスクリプトExcelの特定のワークシート(このコードでは"Sheet9")内のセルを比較し、一定の条件下で値を生成・コピーする操作を行います。ただし、先程のスクリプトとはいくつかの点で動作が異なります。

具体的な操作は以下の通りです:

  1. ワークシートの"H"列を上から下へ順にスキャンします。
  2. "H"列のセルの値を取得します。
  3. 同時に、"M"列の値をスペース(" ")で区切り、複数の部分文字列(単語)に分割します。これらの部分文字列は配列mValuesに格納されます。
  4. その後、配列mValuesの各要素をスキャンします。
  5. "H"列の値と配列mValuesの各要素を比較します。
  6. もし"H"列の値と配列mValuesのある要素が一致した場合、その要素と、同じ行の"N"列の値を結合した文字列(要素、コンマ、スペース、"N"列の値)を、同じ行の"J"列にコピーします。そしてその時点でのループを終了します。

このコードを用いることで、"H"列の値が"M"列の値のいずれかの部分文字列(単語)と一致する場合、その一致した部分文字列と同じ行の"N"列の値を結合した文字列を"J"列にコピーすることができます。

Sub CompareAndCopy()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet9") ' シートの名前を適切なものに変更してください

    Dim i As Long, j As Long
    Dim hValue As Variant

    ' H列の各セルに対してループを回す
    For i = 1 To ws.Cells(ws.Rows.Count, "H").End(xlUp).Row
        hValue = ws.Cells(i, "H").Value
        
        ' M列の各セルに対してループを回す
        For j = 1 To ws.Cells(ws.Rows.Count, "M").End(xlUp).Row
            ' H列の値とM列の値が一致したら、I列とJ列にコピー
            If hValue = ws.Cells(j, "M").Value Then
                ws.Cells(i, "I").Value = ws.Cells(j, "M").Value
                ws.Cells(i, "J").Value = ws.Cells(j, "N").Value
            End If
        Next j
    Next i

End Sub

都道府県別でみて一致したら出力

このVBAVisual Basic for Applicationsスクリプトは、Excelの特定のワークシート(このコードでは"Sheet1")内のセルを比較し、一定の条件下で値をコピーする操作を行います。具体的な操作は以下の通りです。

  1. ワークシートの"H"列を上から下へ順にスキャンします。
  2. "H"列のセルの値を取得します。
  3. その後、ワークシートの"M"列を上から下へ順にスキャンします。
  4. "M"列のセルの値と"H"列の値を比較します。
  5. もし"H"列の値と"M"列の値が一致した場合、その時点での"M"列と"N"列の値を、同じ行の"I"列と"J"列へそれぞれコピーします。

このコードを用いることで、"H"列の値が"M"列のどこかの値と一致する場合、一致した"M"列とその右隣の"N"列の値を、同じ行の"I"列と"J"列にコピーすることができます。

Sub CompareAndCopy()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet9") ' シートの名前を適切なものに変更してください

    Dim i As Long, j As Long
    Dim oValue As Variant

    ' O列の各セルに対してループを回す
    For i = 1 To ws.Cells(ws.Rows.Count, "O").End(xlUp).Row
        oValue = ws.Cells(i, "O").Value
        
        ' P列の各セルに対してループを回す
        For j = 1 To ws.Cells(ws.Rows.Count, "P").End(xlUp).Row
            ' O列の値とP列の値が一致したら、Q列の値をK列にコピー
            If oValue = ws.Cells(j, "P").Value Then
                ws.Cells(i, "K").Value = ws.Cells(j, "Q").Value
                Exit For '一致する値が見つかったら、そのループは終了
            End If
        Next j
    Next i

End Sub

前回出した都道府県に対応した金額を出力する

このVBAVisual Basic for Applicationsスクリプトは、Excelの特定のワークシート(このコードでは"Sheet1")内のセルを比較し、一定の条件下で値をコピーする操作を行います。具体的な操作は以下の通りです:

  1. ワークシートの"O"列を上から下へ順にスキャンします。
  2. "O"列のセルの値を取得します。
  3. その後、ワークシートの"P"列を上から下へ順にスキャンします。
  4. "P"列のセルの値と"O"列の値を比較します。
  5. もし"O"列の値と"P"列の値が一致した場合、その時点での"Q"列の値を、"O"列の値と一致した場所の同じ行の"K"列へコピーします。そしてその時点での"P"列に対するループを終了します。

このコードを用いることで、"O"列の値が"P"列のどこかの値と一致する場合、一致した場所の"Q"列の値を、同じ行の"K"列にコピーすることができます。

Sub Identify23Districts()

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet9") ' シートの名前を適切なものに変更してください
    
    Dim i As Long
    Dim address As String
    
    ' 東京都23区の名前を配列に格納
    Dim districts() As Variant
    districts = Array("千代田区", "中央区", "港区", "新宿区", "文京区", "台東区", "墨田区", "江東区", "品川区", _
    "目黒区", "大田区", "世田谷区", "渋谷区", "中野区", "杉並区", "豊島区", "北区", "荒川区", "板橋区", _
    "練馬区", "足立区", "葛飾区", "江戸川区")
    
    Dim district As Variant
    
    For i = 1 To ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
        address = ws.Cells(i, "B").Value
        
        ' 住所が東京都23区に含まれているか確認
        If InStr(address, "東京都") > 0 Then
            For Each district In districts
                If InStr(address, district) > 0 Then
                    ws.Cells(i, "C").Value = 1
                    Exit For
                End If
            Next district
        End If
    Next i

End Sub

23区は、料金違うから東京都の中から23区抽出

このVBAVisual Basic for Applicationsスクリプトは、Excelの特定のワークシート(このコードでは"Sheet9")に格納されている住所情報から、その住所が東京都23区内に存在するかを識別する操作を行います。具体的な操作は以下の通りです:

  1. ワークシートの"B"列を上から下へ順にスキャンします。この"B"列は住所情報を含んでいると想定されます。
  2. "B"列のセルの値(住所)を取得します。
  3. その住所が東京都内に存在するかを判断します。具体的には、その住所が"東京都"という文字列を含むかどうかをチェックします。
  4. もし住所が東京都内に存在する場合、さらにその住所が東京都23区のどれかに該当するかを判断します。東京都23区の各区名を含む配列を作成し、その各区名が住所に含まれているかをチェックします。
  5. もし住所が東京都23区のいずれかに該当する場合、同じ行の"C"列に1を記入します。

このスクリプトを用いることで、住所情報が東京都23区内に存在する行を識別し、その情報を"C"列にマークすることができます。これは地理的な範囲に基づいた分析やフィルタリング等で利用されます。

…と続きますが今回はこの辺で!

みたいな感じで何層にも分けてVBA実行して複雑なデータ抽出も簡単にこなしました♬

 

有機 あずき美人茶 ペットボトル 500mL 12本セット【送料無料】【有機JAS認定】

価格:3,240円
(2023/4/25 09:43時点)
感想(1件)

《2000円クーポン配布中》 ヤ−マン アセチノ5Dデザイニングクリーム 35g ボディクリーム 美容クリーム スキンケア アセチノクリーム アセチノ美容クリーム

価格:3,980円
(2023/4/9 22:54時点)
感想(45件)