関数をセルに入力して結果を値に変換するマクロ
を示す。
■Excel-VBA 関数をセルに入力して結果を値に変換するマクロ
Sub sample26() Dim MR As Long Dim MC As Long MR = Cells(Rows.Count, 1).End(xlUp).Row 'ω'最終行,A:A MC = Cells(1, Columns.Count).End(xlToLeft).Column 'ω'1:1,最終列 Range(Cells(2, MC + 1), Cells(MR, MC + 1)).Formula = "=MID(E2,2,4)" Range(Cells(2, MC + 1), Cells(MR, MC + 1)).Value = Range(Cells(2, MC + 1), Cells(MR, MC + 1)).Value End Sub※[2.~3.] 変数宣言。
※[4.~5.] 最終行数、最終列数取得。
※[7.] MID関数を最終列の次に入力。
※[8.] MID関数の結果を値に変換。
※[8.] MID関数の結果を値に変換。
※「=MID(E2,2,4)」 MID関数。
指定位置から任意の文字数を抽出する。
他にLEFT関数、RIGHT関数がある。
E2の2文字目から4文字抜き出す。
■マクロ実行対象
「部品データ_191128.xlsx」の「部品表」シート。5列目(E列)。■マクロ実行結果
実行すると、20列目(T列)、2行目から「=MID(E2,2,4)」
「=MID(E3,2,4)」
「=MID(E4,2,4)」
…
最終行まで入力され、
関数⇒結果の値に変換される。
■あとがき
今回はExcel VBAマクロ。関数をセルに入力して結果を値に変換するマクロ
を示した。
扱うエクセルファイルの
データ量が多く(十万行程度)、
関数が使われていると自動再計算のたびに
時間を数分とられる場合がある。
なので極力関数は値に変換する。
自動再計算を回避するだけなら
「計算方法の設定」を
「自動」から「手動」に変更する方法もある。
VBAマクロでも
「Application.Calculation = xlCalculationManual」と
「Application.Calculation = xlCalculationAutomatic」で
切替可能。
■Excel-VBA マクロ処理高速化のため停止可能な項目7選
参考。
LibreOffice Basicでコード先頭に
「Option VBASupport 1」記述して
Option VBASupport 1関数をセルに入力して結果を値に変換するマクロ
試したが
全てのセルに「=MID(E2,2,4)」が入ってしまい、
意図した結果は得られなかった。
※エクセルではセルごとにE2⇒E3⇒…となる。
以上。