不揃いな数値を〇桁固定の文字列に自動変換!
こんな人に有効
- データをExcelで見てみたら"00001"というIDが"1"になってて、打ち直すにも件数が多すぎて手間
- Excelの関数でやろうとすると"0"をうまく埋められない
- 桁が足りている"55555"が関数で"055555"みたいになって逆に手間
- そもそも「ピッ」と押したら「パッ」とならんのか!?という方
会員番号とか社員番号の一覧をCSVで受け取ったときなんかによくある現象ではないでしょうか。
データをくれた人が元のCSVを直接Excelで開いて分かりやすいように色付けとか罫線を引いてくれてCSVに上書きしたものを送ってくれた。
そんな愛にあふれたCSVを開くと会員番号のフォーマットが数値化していて総崩れ。
自分がデータベースからエクスポートするのなら、設定でうまく出せばいい話ですが、そんな愛にあふれたデータを
「ダメだよこのフォーマットじゃ。出し直して!」
と言えない相手もいるでしょう。
打ち直すにしても軽く1万人分とか言ったら絶句ですね。
このプログラムの内容自体はショボい内容です。組める人から見たらこんなの作るまでもない、とあきれるレベルかと思いますが、だからこそ「そんなロジック組んでる場合じゃない」なんて切羽詰まった場面に
サクッとコピペしてさっさと仕事を終わらせてしまいましょう。
そしてデータをくれた人に
「ありがとう、おかげで助かったよ( ´_ゝ`)ノ」
とオトナの対応をしましょう。
痒い所の「ちょっと先」に手が届く。それがここのコンセプトです。
使い方
※もし「開発」タブが無い場合は以下をお試し下さい。
ExcelでVBAを使えるようにする初期設定 | Studio Norway Blog
- Excelの「開発」タブから「Visual Basic」をクリック
- 開いた「Microsoft Visual Basic for Application」のメニューで「挿入」→「標準モジュール」を選択
- 画面左側に「標準モジュール」というフォルダができるので展開する。
- 「Module1」をダブルクリックすれば、コードを打ち込むためのウィンドウが出てくるので、以下のコードをコピペ
- 「実行」ボタン若しくはF5キーを押して実行。
- 変換を掛けたい列の先頭セルをマウスカーソルでセレクトしてOKを押す
- \(^o^)/
但し、空白セルが途中に入っているとそこで止まってしまうショボい設定です。
そこはインスタント機能なんでご愛敬で。
以下のコードをコピーして使用してください
Option Explicit
Dim i As Integer '共通で使用
Dim sh1 As String
Dim rng As Range
Dim clm1 As Integer 'ヘッダーの列指定
Dim row1 As Integer 'ヘッダーの行指定
Sub Macro1()
'マクロでの出来事を非表示にする(高速化のため)
Application.ScreenUpdating = False
'ヘッダー位置決め
'カラムの項目名を読み込むための先頭決め
Set rng = Application.InputBox( _
Prompt:="変換したい行の先頭セルを選択してください。", _
Type:=8)
On Error GoTo 0
If rng Is Nothing Then Exit Sub
clm1 = rng.Column
row1 = rng.Row
i = 0
Do While Cells(row1 + i, clm1) <> ""
With Cells(row1 + i, clm1)
.NumberFormatLocal = "@" 'セルの書式設定を「文字列」にする
.Value = Format(.Value, "00000") '数字を0埋めする(5桁揃え)
End With
i = i + 1
Loop
'マクロでの出来事を非表示にする(高速化のため)
Application.ScreenUpdating = True
MsgBox "作業終了!"
End Sub
このプログラムでは数値5桁"00000"のフォーマットにしていますが
.Value = Format(.Value, "00000")の0を増減させることで桁数調整ができます。