Excel

シート内のどのセルが変更されたか記録したい場合(別シートに記録)

以下のイベントマクロを管理したいシートに記述します。 記録用に別シート(例では「書換履歴」シート)を作成します。 '******************************************************** Private Sub Worksheet_Change(ByVal Target As Range)'*****************…

VBA 丸付き数字を使う

データ内の数字を①、②・・・や➊、➋・・・Ⅰ、Ⅱ・・・で表示して目立つようにしたい場合、文字として扱うと①、②と順番に変えていくことが面倒です。 そこでUnicodeを使いたいのですがUnicode表は16進数で表示されているのが多く変数として扱うにはハードルが高…

VBA フィルタを操作する

複数の人が操作(読み書き)をするようなファイルをVBAを使うとフィルタがかけられて思わぬエラーに遭遇したり書き込み消し込みが正常に機能しなかったり不具合が発生することがある。 一番シンプルで簡単なものはVBA操作の最初に3行を記入しておけば不具合…

VBA Modを使う(割り算の余りを求める)

10進法で作業が進めにくい場合もあります。意外と使い道があるので覚えてください。 まず、Excelでは 答え「1」のところの数式は、 =MOD(A2,B2) <R1C1参照形式:=MOD(RC[-2],RC[-1]) > 割られる数 割る数 余り 10 3 1 VBAでは下のように記述…

VBA R1C1参照形式からA1参照形式に変換

Excelは通常、A1参照形式で扱うことが多いがそれ以外にA列、B列ではなく列表示も数字のR1C1参照形式がある。 昭和世代にはロータス形式、マルチプラン形式のほうが馴染みやすいが今では通じない死語かも知れない。 VBAでは変数を扱う場合、数字のほうが変数…

VBA 空白(””)を含む数式を入れるときの処理

計算式が無効にならないように空白を考慮した計算式例 1 2 3 4 1 出身県 人数 年俸 平均年俸(万円) 2 岐阜 1 1,800 =IF(RC[-2]<>"",RC[-1]/RC[-2],"") 3 静岡 4 32,770 =IF(RC[-2]<>"",RC[-1]/RC[-2],"") 4 愛知 =IF(RC[-2]<>"",RC[-1]/RC[-2],"") 5 三重 …

VBA DateAdd関数

VBA DateAdd関数 指定した時間間隔を日付に加算してその日付を含む Variant (Date) を返します。 使用例 ・販売予測と在庫数から在庫がなくなる日を予測します。 ・在庫が無くなる予測日から補充発注をする日を割り出します。 DateAdd(interval, number, dat…

VBA データベースの最終行を調べる

Excel VBAを使ってデータベースを集計するとき、レコードの最終行を知る必要がある。 私が最初に覚えたのがCurrentRegionプロパティで、例えば GYO = Sheets("Data").Cells(1, 1).CurrentRegion.Rows.Count Dataシートの1行目からデータが入っているものに…

VBA セルを色塗りする

データの内容に応じてセルの色を変えたい場合、VBAで処理をしなくてもExcelの「条件付き書式」で設定をしておけばいい。とは言えExcelデータで作業をしていると「条件付き書式」ではないほうがいいこともある。そんなときに活用したい。 例えば、VBAでデータ…

VBA 全角半角混在の英数字を統一する(Str Conv関数)

入力時のExcel環境によりアルファベットが半角であったり全角であったり統一性がないデータを集計すると誤った集計がされてしまうことがある。 特に複数のデータベースを使って作業をする場合は文字列を統一しておくこと。 Sub Macro21()Cells(2, 1) = …

VBA Format関数

データベースに日付を入力したいことは頻繁にあるがその時、活躍するのがFormat関数です。例えばファイル名に今日の日付を使いたい場合にも簡単にできます。 Sub Macro1() Cells(1, 1) = Format(Now, yyyymmdd)Cells(2, 1) = Format(Now, "yyyymmdd") Cells(…