MacのExcelでマクロを使用して時間を節約し、さらに多くのことを行う

MacのExcelでマクロを使用して時間を節約し、さらに多くのことを行う

Mac上のExcelは、Windows上のExcelと常に同じパワーハウスであるとは限りません。マクロは、Mac専用に作成されていない限り、実際には機能しません。





2013年以降、Microsoftはマクロを復活させました。マクロには2つのタイプがあります。アクションをすばやく記録して作成できるマクロと、VBAを使用してより高度な自動化を設計するマクロです。 Office 2016では、Excelは すべてのプラットフォームで同じコードベース 。この変更により、マクロがプラットフォーム間で機能しやすくなります。





それでは、これが現在macOSでどのように機能するかを見てみましょう。





あなたが退屈しているときにオンラインで行うこと

MacのExcelでマクロを有効にする

MacのExcelでマクロを操作することは、デフォルトで有効になっていない場合があります。この設定は、マクロがマルウェアベクトルの可能性があるためです。伝える最も簡単な方法は、あなたが持っているかどうかを確認することです デベロッパー Excelのリボンで使用できるタブ。表示されない場合は、簡単に有効にできます。

クリック Excel メニューバーで、を選択します 環境設定 ドロップダウンで。メニューで、をクリックします リボンとツールバー 。右側のリストでは、 デベロッパー 下部にあるはずですので、チェックボックスをクリックしてください。最後に、をクリックします 保存する リボンの最後に[開発者]タブが表示されます。



マクロを使用して各ブックを作成したら、新しい形式で保存します .xlsm ファイルを再度開いた後にマクロを使用します。忘れた場合、保存しようとするたびにExcelが通知します。また、ファイルを開くたびにマクロを有効にする必要があります。

MacのExcelでマクロを手動で記録する

マクロをコーディングすることはできますが 、それはすべての人のためではないかもしれません。 VBAの使用を開始する準備ができていない場合、Excelではマクロの手順を既存のシートに記録できます。 [開発者]タブをクリックして、オプションを表示します。





リボンの3番目のオプションを探しています。 マクロの記録 。これをクリックすると、ダイアログがポップアップ表示され、マクロに名前を付けたり、キーボードショートカットを設定したりできます。マクロのスコープを 現在のワークブック 、 に 新しいワークブック 、またはあなたの パーソナルマクロワークブック 。パーソナルマクロワークブックはユーザープロファイルにあり、ファイル間でマクロを使用できます。

アクションを記録すると、この同じタブで利用できるようになります。マクロをクリックすると、ワークブックに保存されているマクロが表示されます。マクロ名をクリックして、 走る 記録したアクションを実行します。





例1:1日の売上合計と1時間の平均

マクロの例では、売上を1時間ごとの合計で分類して、日次の売上シートを実行します。マクロは、1日の売上合計を追加してから、各時間の最後の列に平均を追加します。小売店やその他の営業職で働いている場合、これは収益を追跡するのに役立つシートです。

最初のシートを設定する必要があります。この最初の空白をテンプレートとして使用して、毎日新しいタブにコピーすると、時間を節約できます。最初の列/行に時間/日付を入力します。上部に月曜日から金曜日まで追加します。

次に、最初の列に8〜5の時間合計の内訳を入力します。私は24時間制を使用しましたが、必要に応じてAM / PM表記を使用できます。シートは上のスクリーンショットと一致している必要があります。

新しいタブを追加し、テンプレートをそのタブにコピーします。次に、その日の販売データを入力します。 (このシートに入力するデータがない場合は、 あなたが入ることができます = RandBetween(10.1000) すべてのセルでダミーデータを作成します。)次に、をクリックします。 デベロッパー リボンで。

次に、をクリックします マクロの記録 。ダイアログで名前を次のように入力します AverageandSum に保存したままにします このワークブック 。必要に応じてショートカットキーを設定できます。マクロの機能の詳細が必要な場合は、説明を入力できます。 [OK]をクリックして、マクロの設定を開始します。

時間単位のリストの下部に次のように入力します 毎日の合計 。その隣のセルに、 = SUM(B2:B10) 。次に、それをコピーして残りの列に貼り付けます。次に、ヘッダーに追加します 平均 最後の列の後。次に、下の次のセルに次のように入力します =平均(B2:F2) 。次に、それを列の残りのセルに貼り付けます。

次に、をクリックします 録音を停止します 。これで、ブックに追加する新しいシートごとにマクロを使用できるようになります。別のデータシートを入手したら、に戻ります。 デベロッパー をクリックします マクロ 。マクロが強調表示されているはずです。[実行]をクリックして、合計と平均を追加します。

この例では、いくつかの手順を節約できますが、合計する可能性のあるより複雑なアクションの場合です。同じフォーマットのデータに対して同じ操作を行う場合は、記録されたマクロを使用してください。

Mac上のExcelのVBAマクロ

Excelで手動で記録されたマクロは、常に同じサイズと形状のデータに役立ちます。シート全体に対してアクションを実行する場合にも役立ちます。マクロを使用して問題を証明できます。

シートにさらに時間と日を追加して、マクロを実行します。マクロが新しいデータを上書きするのがわかります。これを回避する方法は、コードを使用して、VBAを使用してマクロをより動的にすることです。 VisualBasicのスリム化バージョン 。実装は、Officeの自動化に重点を置いています。

それはそうではありません Applescriptとして簡単に入手できます 、ただし、Officeの自動化は完全にVisualBasicを中心に構築されています。したがって、ここで使用すると、すぐに向きを変えて他のOfficeアプリで使用できるようになります。 (仕事でWindows PCで立ち往生している場合にも、大きな助けになる可能性があります。)

ExcelでVBAを操作する場合、別のウィンドウがあります。上のスクリーンショットは、コードエディターに表示される記録済みのマクロです。ウィンドウモードは、学習中にコードをいじるのに役立ちます。マクロがハングアップした場合、変数とシートデータの状態を確認するためのデバッグツールがあります。

Office 2016には、完全なVisualBasicエディターが付属しています。これにより、以前はWindowsバージョンに限定されていたオブジェクトブラウザとデバッグツールを使用できます。次の場所に移動すると、オブジェクトブラウザにアクセスできます。 表示>オブジェクトブラウザ または単に押す Shift +コマンド+ B 。次に、使用可能なすべてのクラス、メソッド、およびプロパティを参照できます。次のセクションのコードを作成するのに非常に役立ちました。

例2:コードを使用した1日の売上合計と1時間の平均

マクロのコーディングを開始する前に、テンプレートにボタンを追加することから始めましょう。この手順により、初心者ユーザーがマクロにアクセスしやすくなります。タブやメニューを掘り下げるのではなく、ボタンをクリックしてマクロを呼び出すことができます。

前の手順で作成した空白のテンプレートシートに戻ります。クリック デベロッパー タブに戻ります。タブが表示されたら、をクリックします ボタン 。次に、テンプレートのシートのどこかをクリックしてボタンを配置します。マクロメニューが表示されたら、マクロに名前を付けてクリックします 新しい

VisualBasicウィンドウが開きます。あなたはそれがとしてリストされているのを見るでしょう モジュール2 プロジェクトブラウザで。コードペインには Sub AverageandSumButton() 上部と数行下 エンドサブ 。マクロの始まりと終わりであるため、コードはこれら2つの間を移動する必要があります。

ステップ1:変数を宣言する

まず、すべての変数を宣言する必要があります。これらは以下のコードブロックにありますが、それらがどのように構築されているかについてのメモです。を使用してすべての変数を宣言する必要があります なし 名前の前に、そして なので データ型を使用します。

Sub AverageandSumButton()
Dim RowPlaceHolder As Integer
Dim ColumnPlaceHolder As Integer
Dim StringHolder As String
Dim AllCells As Range
Dim TargetCells As Range
Dim AverageTarget As Range
Dim SumTarget As Range

すべての変数が揃ったので、すぐにいくつかの範囲変数を使用する必要があります。範囲は、ワークシートのセクションをアドレスとして保持するオブジェクトです。変数 すべてのセル 列と行のラベルを含む、シート上のすべてのアクティブなセルに設定されます。あなたはこれを呼び出すことによってこれを取得します アクティブシート オブジェクトそしてそれは UsedRange 財産。

問題は、平均データと合計データにラベルを含めたくないということです。代わりに、AllCells範囲のサブセットを使用します。これがTargetCellsの範囲になります。その範囲を手動で宣言します。その開始アドレスは、範囲の2番目の列の2番目の行のセルになります。

あなたはあなたの AllCells 範囲、その使用 細胞 を使用してその特定のセルを取得するクラス (2.2) 。範囲内の最後のセルを取得するには、引き続き AllCells 。今回は SpecialCells プロパティを取得するメソッド xlCellTypeLastCell 。以下のコードブロックで、これらの両方を確認できます。

Set AllCells = ActiveSheet.UsedRange
Set TargetCells = Range(AllCells.Cells(2, 2), AllCells.SpecialCells(xlCellTypeLastCell))

ステップ2:For Each Loops

コードの次の2つのセクションは、ForEachループです。これらのループはオブジェクトを通過して、そのオブジェクトの各サブセットに作用します。この場合、行ごとに1つ、列ごとに1つ、合計2つ実行します。それらはほとんど同じなので、そのうちの1つだけがここにあります。しかし、両方ともコードブロックにあります。詳細は実質的に同じです。

各行のループを開始する前に、ループが各行の平均を書き込むターゲット列を設定する必要があります。あなたは ColumnPlaceHolder このターゲットを設定する変数。あなたはそれをに等しく設定します カウント の変数 細胞 のクラス AllCells 。それに1つ追加して、追加してデータの右側に移動します +1

次に、を使用してループを開始します それぞれについて 。次に、サブセットの変数を作成します。この場合は、 subRow 。後に 、解析するメインオブジェクトを設定します TargetCells 。追加する .Rows 最後に、範囲内のすべてのセルではなく、各行のみにループを制限します。

ループ内では、ActiveSheet.Cellsメソッドを使用して、シートに特定のターゲットを設定します。座標はを使用して設定されます subRow.Row ループが現在入っている行を取得するには、次を使用します。 ColumnPlaceHolder 他の座標用。

これを3つのステップすべてに使用します。最初に追加する 。価値 括弧の後に、次のように設定します WorksheetFunction.Average(subRow) 。これにより、行の平均の数式がターゲットセルに書き込まれます。追加する次の行 。スタイル に等しく設定します '通貨' 。このステップは、シートの残りの部分と一致します。最後の行に、追加します .Font.Bold に等しく設定します NS 。 (ブール値であるため、この行の前後に引用符がないことに注意してください。)この行は、要約情報をシートの他の部分から目立たせるためにフォントを太字にします。

両方の手順は、以下のコード例にあります。 2番目のループは、行を列に交換し、数式を次のように変更します。 。この方法を使用すると、計算が現在のシートの形式に関連付けられます。それ以外の場合は、マクロを記録するときのサイズにリンクされます。したがって、より多くの日数または数時間働くと、関数はデータとともに大きくなります。

ダウンロードやサインアップなしで、新しい映画をオンラインで無料で視聴できます
ColumnPlaceHolder = AllCells.Columns.Count + 1
For Each subRow In TargetCells.Rows
ActiveSheet.Cells(subRow.Row, ColumnPlaceHolder).Value = WorksheetFunction.Average(subRow)
ActiveSheet.Cells(subRow.Row, ColumnPlaceHolder).Style = 'Currency'
ActiveSheet.Cells(subRow.Row, ColumnPlaceHolder).Font.Bold = True
Next subRow
RowPlaceHolder = AllCells.Rows.Count + 1
For Each subColumn In TargetCells.Columns
ActiveSheet.Cells(RowPlaceHolder, subColumn.Column).Value = WorksheetFunction.Sum(subColumn)
ActiveSheet.Cells(RowPlaceHolder, subColumn.Column).Style = 'Currency'
ActiveSheet.Cells(RowPlaceHolder, subColumn.Column).Font.Bold = 'True'
Next subColumn

ステップ3:要約にラベルを付ける

次に、新しい行と列にラベルを付け、設定します RowPlaceHolderColumnPlaceHolder また。まず、 AllCells.Row 範囲の最初の行を取得してから AllCells.Column + 1 最後の列を取得します。次に、ループと同じ方法を使用して、値を次のように設定します。 「平均売上高」 。同じものを使用します .Font.Bold 新しいラベルを太字にするプロパティ。

次に、それを逆にして、プレースホルダーを最初の列と最後の行に設定して追加します 「総売上高」 。これも太字にします。

両方のステップは、以下のコードブロックにあります。これは、によって示されるマクロの終わりです。 エンドサブ 。これでマクロ全体が作成され、ボタンをクリックして実行できるようになります。チートしたい場合は、これらすべてのコードブロックを順番にExcelシートに貼り付けることができますが、その面白さはどこにありますか?

ColumnPlaceHolder = AllCells.Columns.Count + 1
RowPlaceHolder = AllCells.Row
ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Value = 'Average Sales'
ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Font.Bold = True
ColumnPlaceHolder = AllCells.Column
RowPlaceHolder = AllCells.Rows.Count + 1
ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Value = 'Total Sales'
ActiveSheet.Cells(RowPlaceHolder, ColumnPlaceHolder).Font.Bold = True
End Sub

Mac上のExcelのマクロの次は何ですか?

記録されたマクロは、予測可能な繰り返しに使用するのに最適です。すべてのセルのサイズを変更してヘッダーを太字にするような単純なものであっても、これらを使用すると時間を節約できます。ただ 一般的なマクロの間違いを避ける

Visual Basicは、MacExcelユーザーがOfficeオートメーションを深く掘り下げるための扉を開きます。 Visual Basicは、従来、Windowsでのみ使用可能でした。これにより、マクロをデータに動的に適応させることができ、マクロの用途が広がります。忍耐力があれば、これはより高度なプログラミングへの入り口になる可能性があります。

もっと時間を節約するスプレッドシートのトリックが必要ですか? Excelの条件付き書式とMacの数値の条件付き強調表示を使用して特定のデータを自動的に強調表示する方法を学びます。

共有 共有 つぶやき Eメール メールが本物か偽物かを確認する3つの方法

少し疑わしいメールを受け取った場合は、その信頼性を確認することをお勧めします。メールが本物かどうかを判断する3つの方法があります。

次を読む
関連トピック
  • マック
  • 生産性
  • プログラミング
  • VisualBasicプログラミング
  • マイクロソフトエクセル
著者について マイケル・マコーネル(44件の記事が公開されました)

Michaelは運命のときにMacを使用しませんでしたが、Applescriptでコーディングすることはできます。彼はコンピュータサイエンスと英語の学位を持っています。彼はしばらくの間、Mac、iOS、およびビデオゲームについて書いています。彼は10年以上、スクリプトと仮想化を専門とする日中のITモンキーです。

マイケル・マコーネルのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください