タグ別アーカイブ: 便利技

意外にも知られていないエクセルの便利機能・便利技~ガッツの日記 第13回

【エクセルはあまりに機能が多すぎるので、知られていない便利機能・便利技があります】

仕事柄、色々なところで色々なエクセルの活用の仕方に出会います

エクセルの活用者と話していて気づくのは、意外にも知られていない機能や便利技が結構あることです

今回の記事では「便利」だけど意外に「あまり知られていない」機能や便利技について、私の独断と偏見でピックアップして紹介します

計算の手動化

ワークシート内に数式を膨大に使用している場合、セルに入力するたびに膨大な計算が走ります

ですので、ワークシートが所謂「重たい」という状態になります

この場合、解決方法としては本来はデータベース等を導入することが考えられます

ただすぐに導入できる方法もあります

それが「計算の手動化」です

文字通り、数式の計算を止めます

そして、必要な時だけ計算します

数式タブには「計算方法の設定」というメニューがあり、こちらで数式の計算を止めることができます

ちなみに、通常は「自動」になっています

そして必要な時だけ「F9」ボタンを押せばファイル内(Shiftを押しながらだとシート内)の関数が計算されます

いや、入力するたびに計算結果が見たいんです、もしくは数式の計算をシート内に絞っても計算が遅いんです、という場合もあると思います

この場合は、VBAを使う方法があります

詳細はこの記事では書きませんが、VBAコードを入力というイベントに応じて動かす方法があります(イベントプロシージャーと言います)

イベントプロシージャーは、該当シートで右クリックすると表示される「コードの表示」で設定できます

次に開いた画面では、下の画像のように画面上の2つの欄を「Worksheet」「Change」に設定します

これで、入力したセルの行位置及び列位置を取得できます

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myRow As Long
Dim myCol As Long

myRow = Target.Row ←行位置
myCol = Target.Column ←列位置

下の画像の事例では「手動で計算」の設定のままC列に入力した場合、1つ右のセルだけ計算されます

実際のVBAコードは次のようになります

If myCol = 3 Then
ActiveSheet.Cells(myRow, myCol + 1).Calculate

End If

入力位置が3列目(C列)だった場合、該当シートの入力位置がの一つ右を再計算(Calculate)

するわけです

これであれば、入力位置の行だけを計算できますので、かなり計算は軽くなります

テーブル機能

この機能を知ったのは恐らく5年ぐらい前だと思いますが、意外と浸透していないという実感があります

データが集まった表をテーブルにすると、何かと表内のデータを便利に扱えるようになります

下の画像では、1つのセルに関数を入力したことで、全ての行に関数が反映されています

つまり、データを扱う単位がセルではなく行単位になっています

テーブル機能には、上記のような便利な機能が満載なのです

この「満載」を具体的な一言で言い換えると、位置から名前への変換ということかもしれません

従来、エクセルを使おうとしたらセル単位という縛りの中でしか動けません

A列の5行目、C列の10行目といった感じでセルの位置をいちいち指定するしかありません

例えば、以下の画像のB列の合計を計算しようとしたら、マウスを動かしてC列の該当範囲を選択するしかありません

しかも、C列の範囲が拡大したら選択し直す必要があります

ところが、テーブル機能を使えば名前でセル位置を指定できます

テーブル機能では、作成したテーブルに名前を付けることができ、テーブル内の列名も自動的に活用できるからです

実は列名の指定もワンクリックでできます

上の画像のように、テーブルの該当「列名」の上にカーソルを置き、すっと上に少し動かすと、下向きの矢印がでます

これでテーブルの列名が指定できます

テーブルの列名で指定すれば、列を移動しようが、行の範囲が拡大しようが適切な範囲を合計できます

このようにテーブル機能は便利な機能が満載ですが、表をテーブルにするのは「Ctrl+T」のショートカットキー一つだけで行えます

とにかく簡単にテーブル機能は活用できますので、ぜひ今日から使用してみてください(→詳細記事

表をテーブルにしたら、テーブルに名前を付けるのもお忘れなく!

最後に、もう一点だけ付け加えさせてください

表をテーブルにするとMicrosoft のメニュー自体をうまく扱えるようになるという点です

これは具体的にはどういうことかというと、Microsoft のPower Platformではエクセルのデータをテーブルで使用するように設計されているからです

Power Appsなんかもテーブルからアプリがワンクリックで作れるようになっています→関連記事

ぜひテーブル機能は使いこなしていきましょう!

クエリの関数化

こちらはPower Queryの活用の仕方の話です

関数というと、SUM関数とかVLOOKUP関数を思い浮かべる方が多いと思います

数学でいうと、Xを使った(X+1)x(X+2)などの公式が関数と言えます

Xの値が何になっても一度作成した関数を使いまわして計算が行えます

クエリの関数化とは、一度作成したクエリをXを絡める関数にして使いまわすという意味です

Power Queryは大分、浸透したと思いますが、こちらのクエリの関数化はまだ知名度はいまいちという感じです

どういう場面で使うかというと、一番使えるのがシート別もしくはファイル別にデータが散らばっているケースです

例えば、以下のようにシート別にデータが散らばっていたとします

しかも、欲しいデータの上に無駄なデータがあります

これがもし、100シートあったとしたらデータをまとめあげる作業はどう行いますか?

手動であればお手上げだと思います

ところが、

クエリの関数化であれば1シートに対して行った処理を、ほぼワンクリックで複数シートに使いまわすことにより、簡単にデータの一元化が行えます

詳細についてはこちらの記事(→クエリの関数化)を参照して頂くとして、今回の記事では概念だけ解説いたします

上の画像は1シートからデータを取得し、無駄な2行を取り除いてテーブルを出力するクエリのソースコードです

実は黄色の箇所に「A」というシート名が入っています

つまり、ファイルの中のシートを取得した中からAシートを処理しているという訳です

この黄色の箇所を数学の関数でいうXに代えるわけです

以下の画像は関数化したクエリの一部です

このXにどういう風に各シートを連続的に割り当てるかというと、このソースステップの列を使用します

今回の事例では、実際にはItem列にある各シート名をフィルターして使用します

これでシート別などにデータが分散している問題をVBAなしで一気に解決できます

フリーアドイン

フリーアドイン機能もあまり知られていないと思います

スマホの便利アプリを利用するような形で、外部から便利機能を補って使用できます

こちらについては、アドインが沢山あるので「Formula Forge」というアプリの概要だけ今回は紹介します

例えば、こんな複雑なIF関数があったとします

読者の皆さんの中には「こんなの序の口だよ」と思われた方もいらっしゃると思います

Formula Forgeを使うと複雑な数式でも図解を一瞬でしてくれます

前任者の複雑なエクセルを引きついで苦しんでいる方にはおすすめのアドインです

<まとめ>

今回は意外と知られていない便利機能・便利技を大きく分けて4種類を紹介しました

とにかく知っているか知っていないかでこの辺りは差が大きく出ますのでぜひ押さえておいて欲しいところです

ところで、

私が思うに、エクセルの機能を最大限使いこなすために一番大事なことは「エクセルの限界」を知ることだと思います

どうしてもエクセルの方が相対的に劣る機能があります

例えば、エクセルは表計算ソフトなので大量のデータを扱うのはあまり得意でないですし、Power Platformなどかなり便利なクラウド機能も出てきています

ですので、最終的にはエクセルの機能を深堀するだけでなく「正しい脱エクセル」も意識する必要があると思っています

この点はまた別途詳しく書きたいと思います

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

SORT関数によるエクセルデータの並び替え~列の並び替えも可

前回は1つの関数に対して複数の出力がある関数(ダイナミック関数)として、FILTER関数を紹介しました

今回は、同じようにダイナミック関数のひとつである、SORT関数を紹介します

エクセルで大量のデータを扱う時に、注意しなくてはいけないことの一つが並べ替えです

間違って並び替えると、列間で食い違いが生じて大規模なミスにつながります。SORT関数では並べ替えのキーが複数あっても、正確に且つ、簡単に並べ替えの処理が行えます

加えて、SORT関数では列の並べ替えが行えるのが大きな利点です!

以前、列フィルター機能を紹介しましたが、従来のエクセルでは列の扱いが困難だったのです

では、今回は、SORT関数の概要だけ紹介します!

1.複数の条件による並び替え

=SORT(並び替え範囲,{列位置,列位置・・・},{並び替え方法,並び替え方法・・・})

並び替え範囲/引数1を指定した後、並び替えの条件になる列の位置/引数2(例:{2,3})を指定し、更に並べ替え方法/引数3を指定します(例:{1,-1})

並べ替え方法/引数3で指定する1、-1とは、<1が昇順>、<-1が降順>の意味にになります

ちなみみに、引数2と引数3は指定の仕方がセットになっています

前述の例で言えば、引数2を{2,3}と指定し、引数3を{1,-1}と指定したので

・引数2の1番目(2)は引数3の1番目(1)とセット

・引数3の2番目(3)は引数3の2番目(-1)とセット

となります

実際の例として、以下の表/テーブル2を並べ替え範囲として、地域(列:2、昇順:1)、売上金額(列:3、降順-1)を並び変えてみます

元データ-テーブル2

数式は以下の通りとなります

SORT関数による並べ替え

SORT関数事例
SORT関数

2.列の並び替え

エクセルは行フィルター機能があるのが便利なのですが、業務によっては在庫表のようなクロス表形式で作業することがあります

以前から、列の並び替え機能もあると便利だとは思っていました

列の並び替えを指定する場合には、 前述の「1.複数の条件による並び替え」 で指定した3つの引数に加えて、4つ目の引数【列方向で並び替えを行う】をTRUEで指定する必要があります

ちなみに、「1.複数の条件による並び替え」にて、列位置で指定した 引数2は行位置で指定します

実際の例として、以下の表の3行目を並べ替え条件に設定し、降順にて列の並べ替えを行います

以下が数式です。4番目の引数をTRUEで指定しています

列並び替え
SORT関数ー列並び替え

但し、列の並び替えができるといっても元データ自体を並び替えできるわけではありません

利用機会を増やすには、別シートで並び変えた内容を編集して表示するなどの工夫が必要になります

ちなみに、FILTER関数と同じく、関数を入力したセル位置に「#」をつけることにより、出力データの再利用は行えます

下のGIFでは、SORT関数が入力された位置(F12)に#をつけることにより、表の右横にSORT関数の出力データを再出力しています

SPILL再利用
#によるデータ再利用

<まとめ>

今回はSORT関数により、データの並べ替えを行う方法を解説しました

SORT関数では、{}の文字を組み合わせることにより、複数の並べ替え条件に1(昇順)、-1(降順)をセットで指定することができます

後、SORT関数では列の並び替えを指定できるという特徴があります

こちらは使い方を研究して見て、ぜひ日常業務の中で活用してみてください

尚、実際のデータでSORT関数の動きを確認したい方は以下のファイルをダウンロードしてください!

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村 IT技術ブログ VBAへ

にほんブログ村