‥‥

コメントは承認制です。

世間で流布されているExcelの限界という大嘘 何の問題もなくExcelで出来ます!

2019年01月19日 | ExcelなどのPC...

周りを見渡しても出来る人がいない ‥‥ だから不可能。

この理屈、合ってますか? 間違ってますか?

100%の方が、この理屈は間違っている ‥‥ との正しい結論を出すに違いありません。

しかし、この間違った論法が、まことしやかに世間で、まかり通っています。

Excelの限界について です。

例えば

1.Excelは10万セルほどの膨大なデーター量になると重くて動かなくなる

→ 125万セルでも、快適に動きます!


2.Excelのデーターベースから必要とする個別ファイルは作れない

→ 希望に沿ったファイルは大抵の場合、作れます!


1 に関しては、確かに大容量データーを全く意識せずにファイルを作れば
負荷が大きい VLOOKUP関数 などを使えば、確かに 10万セル程度で、動きが滞ります。
いかにファイル全体に負荷を掛けないかは十分に配慮しなければなりませんが
極力、ファイルへの負荷を軽減させれば、125万セルのファイルでも
フィルタの設置も条件付書式によるセル色変化も問題なく出来ます。


2 に関しても、データーベースや各種周辺ファイル、様々なプログラムファイルなどを
保存するフォルダ構成をしっかりとさせた上で、必要なプログラムファイルを作って
Excelファイルの自動作成を行えば、大抵のものは作ることが出来ます。


要は世間で流布されている Excelの限界や問題点 とは
挙げた2つ以外も、大抵は次のような似た事柄で、
何が主張されているかは、殆ど全て同じで‥‥

非効率なExcelは止めて、我が社が販売するビジネスシステムの導入 を提案します!
という売り込みです。

Excelが非効率なのはわかるけれど、高額なビジネスシステムを導入するような
予算的な余裕はないから‥‥

こんな風に思われることが圧倒的に多いかと思われますが
大きな間違いです!

問題なく Excelで出来ます!

何人もの人が似たようなExcelファイルを作っていて非効率だということは
間違いありませんが、既に、それぞれの人が使っているExcelファイルを
簡易プログラムを用いて、修正や統合を行い、今後、無駄を省けば良いことで
バラバラに存在する Excelファイル を集約することは、さして大変なことではありません。

逆に、お金を支払って、購入するビジネスシステムに移し替えてもらう方が大変な筈です。

ここからが本題です。

どうして、本当は Excel で出来ることを限界(出来ない)と偽る話が広まり、信じられているのか‥‥。

一番の理由は、そこまでの Excelを使ったシステム を作れる人が少ない からです。

ただし、少ないだけで、存在しないのとは違います。

しかし、そのような高度な技術を持っている人は ‥‥

その技術が(自分の)お金になるから、その ノウハウ を他人に教えることなどありません。

Excel教室の超上級編のようなものが、存在するのでは‥‥などと、漠然に考えている人が多いようですが
そのようなものは、存在する訳がありません。

複合関数の作成などは、技術というよりも半分はセンスのような領域のものです。
センスのようなものを他人に伝えるのは、とても難しいことですし、
更に、お金に直結するような技術を教室などで簡単に他人に教えるようなことをする訳がありません。

総合管理システムを構築するようなExcelの技術を持った人からすれば、そのようなものは無理だ‥‥と世間が言ってくれていた方が
自分の価値を高めてくれることにも繋がるから、

自社のシステムを高額で売りたい会社が、こぞって吹聴する、この大嘘を黙認するのでしょう。

以上、ここまで記してきた カラクリ がきっと存在するのだろう‥‥ と
私は、2年ぐらい前に、そう確信して、次のような行動に移り、今日に至っています。

Excelのノウハウなど、誰も教えてくれる筈がないのならば、独学で自分で学べば良いだけのこと。

そう信じて、学んだ結果、このBLOGに記した通り、何の問題もなくExcelで実現できることを身をもって実感することが出来ました。


音楽(クラシック) ブログランキングへ


福祉・介護 ブログランキングへ


にほんブログ村 介護ブログ 家族介護者へにほんブログ村




無駄な命令を出していることに気づかない上司のようなケースはすぐに解ります

2017年02月11日 | ExcelなどのPC...
何で俺の命令をすぐに実行できないのだ!

と怒りだす上司などの遭遇した苦い経験のある方は少なくないと思います。

このようなケースの中には、実は、本人が全く気づいていないだけで、命令の中に、無駄な命令 が含まれている拙い指示だったことが原因で、部下は全く悪くないということが少なからずあります。

人間には、思い込みによって、font color="pink"> 自分のミスに全く気づかないケース がありますが、コンピューターの場合には、確実に指示ミスがハッキリと解ります。

先日の私の経験ですが、この程度の処理ならば、時間にして 1秒~2秒程度 だろうと予想したExcelのマクロ(VBA)を作り、実行したところ、処理を終了するまでに 4分~5分 も時間がかかってしまいました。

相手が人間だったならば、何で俺の命令を処理するのに、こんなにも時間がかかるのだ! この能無しが ‥‥ という、こうした酷い心の感情が沸き起こってしまったかもしれません。

しかし、コンピューターは正直なのです。



大幅に時間はかかってしまいますが、意図した処理は、正しく実行してくれているので、自分の出した命令(コンピューターへの指示) のどこかに無駄が含まれている筈なのです。

冷静に分析したところ、原因が判明しました。

横の列数が約100列、行数は現時点で約3800行、つまり、38万セルの一部の修正したい箇所のみを指定して、データーベースを修正させる命令(マクロ)なのですが、マクロ(VBA)のコマンドには、特に問題はありませんでした。

問題は、修正すべき元のデーターベースに漏れがないか、その行数を示すための COUNTA関数(空白セル以外の 数値、文字列、論理値、エラー値 をカウントする関数) を設置したことが原因でした。

COUNTA関数があることで、マクロで命令を実行する毎に、現在の行数をコンピューターが数える(カウントする)ために、処理が著しく遅くなってしまっていたのです。

最初に数を確認して、特に問題がなかれば、いちいち数など数えずに処理を実行して何の問題もないのに、私が無駄な命令をコンピューターに与えていたことが原因でした。

マクロの命令を修正し、マクロの実行の最初に COUNTA関数の記してあるセルのこの計算式を消去して、それから、その他の本筋の命令を実行させ、命令の最後に、最初に消去した COUNTA関数 を再び同じセルに(計算式を)入力することで、解決させることが出来ました。

結果として、当初の見込み通り、 1秒~2秒程度 の処理時間で、目的を達成させられることが出来ました。

コンピューターは正直です。

私が間違った命令(指示)を行えば、エラーで処理が実行できませんし、無駄な命令が含まれていれば、処理時間が大幅に遅くなってしまいます。

対人間に対する自分の言動にも、注意しなければ ‥‥ と改めて思いました。




シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5






音楽(クラシック) ブログランキングへ

エクセルでリスト入力させることは時間の無駄ですが変化する可能条件を提示させる場合には有効です

2017年01月29日 | ExcelなどのPC...
意味なく入力リストを選択させる設定を好む人がいますが、時間の無駄で正直、迷惑なものです。

月を1~12、日を1~31をリストから選ばされたのでは、たまったものではありません。

誰もが月が1月から12月まで、日が最大で1日から31日まで知っていますから、リストから選択するよりも、直接、数字を入力した方が時間的にずっと早いのは当然です。

該当する場合にリストから を選択させるようなエクセルファイルも迷惑なもので、リスト選択よりも、直接に入力した方が、ずっと時間的に早いです。

少し言葉は悪いですが、好き勝手に(有効でないものを)選択されては困る場合などには、リスト入力は有効です。


上のサンプルは、提案書作成の依頼書ですが、例えば、依頼を受けてから完成までに最低でも一週間はかかるというルールで運用されているとします。

依頼者の勝手な希望で 3日後を希望日 にされても困りますし、依頼者が日曜日に休日出勤してきて依頼書を作成して、一週間後の日曜日までに仕上げてくれと言ってこられても困ります。

現在の日時を示す NOW関数 と平日のみを選択させる WORKDAY関数 を組み合わせて、希望日として可能な日を計算させます。


C2セルからC23セルに、現在の日時を示す NOW関数 と平日のみを選択させる WORKDAY関数 を組み合わせて、希望日として可能な日を計算させました。

この計算結果が表示される C2セル~C23セル のリストから選択させるようにすることで、無用なトラブルを避けることが出来ます。






シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5





音楽(クラシック) ブログランキングへ

エクセルに登録しているユーザー名を表示させるマクロ(VBA)を活用して無駄な労力を省く

2017年01月28日 | ExcelなどのPC...

たった2行の短い命令文の紹介です。

このマクロを実行すると A1セル に登録してあるExcelのユーザー名が表示されます。

社内の依頼書を作っていますが、社内で何かを依頼する時に依頼書類(データー)が必要なことは多くの会社であると思います。

依頼される側は出来るだけ多くの情報を提供してもらいたいと思いますが、依頼する側は出来るだけ手間を少なく依頼したいと思っています。

時間的に大きな負担を依頼書を作成するために費やしてしまうようならば本末転倒で、依頼者には出来るだけ労力かけさせず、依頼を受ける側には出来るだけ多くの情報が提供されるために何が出来るかを思っていました。

依頼を受ける側が欲しい情報は、依頼者が既に(Excelの)データーとして所持してる情報というケースが殆どなので、データーが載っているExcelファイルを開き、その中から必要情報を読み取るExcelプログラムファイルを作ることで、依頼者の労力を大幅に削減できると思いました。

その過程の中で、依頼者は、必ず自分の名前を依頼書に入力する必要がありますが、自分の名前を入力する時間も節約できないかと考えた結果、Excelに登録しているユーザー名をマクロで読み込めば、便利だと思い、作ったのが、今回のBLOGで紹介したマクロです。


--------------------------------------

Sub エクセルユーザー名を反映させる()
'
' エクセルユーザー名を反映させる Macro
'

'

'エクセルのユーザー名をA1セルに表示させる
エクセルユーザー名 = Application.UserName
Range("A1").Value = エクセルユーザー名


End Sub

--------------------------------------

上のマクロ命令式は単独でも、勿論、動きますが、他のマクロ命令に加えて使うことで、便利に使えます。

表示させるセルを A1セル 以外としたいのであれば、A1 の部分を意図したいセル名に変更すれば大丈夫です。

尚、Excelのユーザー名を登録していない、匿名などで登録している場合は、求めるデーターが得られませんので、Excelの基本設定をしておく必要があります。


ファイル → オプション の順に開くと、上の基本情報設定画面が出ます。


赤く囲った部分に名前を入れておけば、この情報をマクロが読み取ります。


マクロを実行すると A1セル にExcelに登録しているユーザー名が反映されます。




シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5





音楽(クラシック) ブログランキングへ

一覧表で指定した文字列を一度に一括していくつでも瞬時に変換するマクロ(VBA)プログラムを紹介

2016年12月06日 | ExcelなどのPC...
マクロのない一般マクロに入力されているデーターに対して、指定した文字列を何個でも同時に一括変換するプログラムを紹介します。


マクロ(VBA)の入ったプログラムファイルのA列に変換したい文字列、B列にはA列で抽出した文字列を希望の変換後の文字を入力します。

数に制限はなく、いくでも、A列とB列に文字を入力して構いません。


(マクロの入ったものではない方の)一般のエクセルファイルから、表示マクロマクロの表示 の順に選択します。


自身にマクロが内蔵されていなくても、もう一つの開いているエクセルファイルのマクロが表示され、これに実行するよう命令すると、マクロが内蔵されていないエクセルファイルに命令が行われ、一瞬で指定した何組かの、組み合わされた変換が完了します。


マクロ(VBA)を書き込んてある命令文は、このような感じです。

全文を載せておきますので、必要な方は、コピペして使って下さい。


----------------------------------------------

Sub 一覧表による文字一括変換002()
'
' 一覧表による文字一括変換002 Macro
'

'

'他のイベント(他のマクロ)の自動実行を中止させる
Application.EnableEvents = False



'命令を記述したブックと変更処理を行うブックの方向性を定める
Dim マクロBook一覧表一括変換0020 As Workbook 'マクロを記述したブック
Dim 変更一覧表一括変換0020 As Workbook '変更処理を行うブック

Set マクロ一覧表一括変換0020 = ThisWorkbook 'マクロを記述したブック
Set 変更一覧表一括変換0020 = ActiveWorkbook '変更処理を行うブック


'画面ちらつき防止スタート
Application.ScreenUpdating = False


'マクロを記述したブックに命令する
マクロ一覧表一括変換0020.Activate


'MsgBoxを出して処理続行の確認をする
Dim 確認一覧表一括変換0021
確認一覧表一括変換0021 = MsgBox("リストに従い一括変換しますが、誤動作を起こしてしまう関係のないエクセルファイルを開いていることはないでしょうね?全ての準備が大丈夫ならばマクロを実行して下さい。", vbYesNo + vbQuestion + _
vbDefaultButton2, "作業開始の確認")
If 確認一覧表一括変換0021 = vbYes Then


'A列を変換前の文字列、B列を変換後の文字列と定義する
i = 2
Do
x1 = Sheets("変換リスト").Cells(i, 1)
x2 = Sheets("変換リスト").Cells(i, 2)


'変更処理を行うブックに命令する
変更一覧表一括変換0020.Activate


'変更処理の命令
ActiveSheet.Cells.Replace _
What:=x1, Replacement:=x2, _
SearchOrder:=xlByColumns, MatchCase:=True


'マクロを記述したブックに命令する
マクロ一覧表一括変換0020.Activate


'ゼロになるまで、この命令を繰り返す
i = i + 1
Loop Until Sheets("変換リスト").Cells(i, 1) = ""


'他のイベント(他のマクロ)の自動実行を中止を解除させる
Application.EnableEvents = True


'完了メッセージを出す
MsgBox "処理を完了しました。", , "一括変換作業完了報告"


'画面ちらつき防止終了
Application.ScreenUpdating = True


'マクロを記述したブックに命令する
マクロ一覧表一括変換0020.Activate


'このワークブックを上書保存しないで閉じる
ThisWorkbook.Close SaveChanges:=False


'他のイベント(他のマクロ)の自動実行を中止を解除させる
Application.EnableEvents = True


End If


End Sub


----------------------------------------------

最後に、このプログラムの注意事項を載せておきます。

・ ブック全体ではなくシート単位で 一括変換 を行います。
  意図しないシートをアクティブな(開いている)状態でマクロを実行すると、その(意図しない)シートが文字変換されるので、注意して下さい。

・ スペースやアルファベットは半角にも全角にも対応しますが、数字だけは未対応なのでご了承お願いします。

・ 置換のやり直し(元の戻す)処理は出来ませんので、注意して下さい。

・ マクロ処理が終了うすると、このプログラムファイルは自動的に閉じられます。








シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5








音楽(クラシック) ブログランキングへ

翌月の1日を表示させるのに便利なEOMONTH関数

2016年12月03日 | ExcelなどのPC...

EOMONTH関数は過去に1回、登場させて紹介させていますが、便利な関数なので、改めて別の有効的な使い方を紹介します。

今週は11月末締めの書類をエクセルデーターで作成された方も多かったと思います。

冒頭のサンプル画像のように、A列に年、B列に月を入力するエクセルファイルを思い浮かべて下さい。

この年と月の情報で、様々なことが出来ます。

そのような年と月の情報を活用して、次月の初日を自動的に計算させる関数が

=EOMONTH(VALUE(TEXT($A$3,0)&"/"&TEXT($B$3,0)),0)+1

です。

数値情報のA3セルの年とB3セルの月を TEXT関数 を使い、両者の間に / を入れて、2016/11 を作ります。

敢えて、一度、数値情報を文字情報に変えて、/ を挟んで、年月情報を作る ことが、一つのポイントです。

この文字情報を再び 数値情報 に戻します。

文字を数値に変換させる関数が VALUE関数 なので、これを使い、VALUE(TEXT($A$3,0)&"/"&TEXT($B$3,0)) を用いて、再び、数値情報に戻します。

EOMONTH(**,0) は、**が示す日付の情報の月末日を計算する関数なので、これに +1 (プラス1)することで、翌月の1日を計算させることが出来るので、最終的な関数式(関数式の最終形)が

=EOMONTH(VALUE(TEXT($A$3,0)&"/"&TEXT($B$3,0)),0)+1

となるのです。



関連記事情報
エクセル関数式003
今月(当月)・翌月・半年後などの月情報を表示させるエクセル関数
http://blog.goo.ne.jp/pizzica0912/e/696419a0bf1680c9c3018ec5c9bd180f




シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5





音楽(クラシック) ブログランキングへ

不変の関数計算式を作るための便利なINDIRECT関数を紹介します

2016年11月30日 | ExcelなどのPC...

絶対値記号をつけておいても行削除を行うと関数計算式が変更されてしまいます。

上に紹介した

=SUBTOTAL(3,$C$3:$C$102)

という関数では、3行目から102行目までの100行の中で、行削除を実行すると、SUBTOTAL関数が対象として参照する範囲が狭まってしまいます。

1行の行削除を行えば、$C$3:$C$102 の箇所が、$C$3:$C$101 に、3行の行削除を行えば $C$3:$C$99 に変わってしまい、本来の100行の中に、いくつデーターが存在するのかを知るための関数が崩れてしまいます。

データーを消す場合には、Delete を使い、安易に行削除を行わないように気をつければ済むことですが、行削除の方が楽なのも確かで、無意識に行削除をしてしまう危険もあり得ます。

要は、行削除を行っても、関数計算式が崩れないようにすれば良いだけのことです。

変動しては困る $C$3:$C$102 を(例えば)A1セル に記述しておきます。

この A1セル に記された文字情報を読み取る関数が、INDIRECT関数 なのです。

=INDIRECT($A$1)

という関数式を記すと、

(A1セル に記されている)$C$3:$C$102 が返ってきます。


よって(C3セル に)

=SUBTOTAL(3,INDIRECT($A$1))

という関数式を入れると、行削除を行っても、対象範囲は $C$3:$C$102 から変動することはありません。

操作ミスでA1セルを消してしまうなどの危険を回避するために、A列を非表示 にすることで、更に万全になります。





シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5




音楽(クラシック) ブログランキングへ

苗字と名前に分割するエクセル関数は様々な応用が可能です

2016年11月28日 | ExcelなどのPC...

ご存知の方も多いかと思いますが、苗字と名前に分割する関数式で、上のように対象が C3セル にある場合

姓を取り出す計算式は
=LEFT($C3,SEARCH(" ",$C3,1)-1)

名を取り出す計算式は
=MID($C3,SEARCH(" ",$C3,1)+1,LEN($C3)-SEARCH(" ",$C3,1))

となります。

苗字と名前の間が全角スペースの時の計算式で、半角の場合は、上の計算式の全角スペースを半角スペースに変えます。

要は、上の2つの関数式の スペース の部分を別の文字に変えることで、様々な応用ができます。

この応用、私は、ファイルを自動保存させるケースでも、しばしば使います。

詳細は、別の機会に説明しようと思いますが、別ファイルを作って、自動保存させようとする時、まずは自分のファイルが保存されているフォルダを関数計算式を用いて表示させます。

サンプル画像のように、C5セル に、フォルダを表示させたとします。

同じ系統の親フォルダの下に、自分はプログラムファイルなので、プログラムフォルダへ、自動で作成したファイルは隣の 自動保存所 というフォルダに保存させようとする場合に、D6セルに入れた計算式は

=LEFT($C5,SEARCH("¥プログラム",$C5,1)-1)&"¥自動保存所"

となります。(※ ¥は半角文字を用いて下さい)

自分が格納されている プログラムフォルダ から、自動保存所フォルダ へ(文字列)を変える時に、このような関数計算式を用いています。

D6セルで表示されたデーターを文字情報としてマクロで取り出して、場所(格納するフォルダ)とファイル名を命令して、自動保存させる時などは、便利です。






シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5





音楽(クラシック) ブログランキングへ

実は簡単で便利なROW関数の紹介

2016年11月27日 | ExcelなどのPC...

B4セルを先頭に1から順に番号が入力されているエクセルの定番的な表の番号表示です。

実は、ここでは、数字ではなく、関数式が入力されています。

B4セルからB13セルまで、全てのセルに

=ROW()-3

という関数式を入力しているだけです。

ROW() という関数は、自分の行数を示す関数なので、4行目にある B4セル を(先頭の)1番にしたい、今回のようなケースでは、計算結果から 3をマイナスしてあげればよいだけです。

全体のデーターベースから条件に適したデーターを見かけ上の抽出でしかないフィルターでは行いたくない、操作ミスのリスクのある手動でのソートは行いたくないなどの場合に、LARGE関数(またはsmall関数)を使って、その数字をOFFSET関数で参照させて(←私VLOOKUP関数は使いませんが、使われる方にはVLOOKUPでもOK)、条件に見合ったデーターのみを行を詰めて絞り込みをさせる時などにも、ROW関数を使って関数式を記すと便利です。




シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5




音楽(クラシック) ブログランキングへ

フィルタで絞込中かを判断させるエクセル関数

2016年11月23日 | ExcelなどのPC...

サンプル画像のような10行にも満たないな小さなものならば、フィルタを使用しているどうかは、一目瞭然ですが、縦横に何百、何千もの行や列となる大きなデータベースでは、横にスクロールさせてフィルタの有無を確認するのは大変です。

A列にデーターが詰まっていると仮定して、A列以外の列には下記のような関数式を

=IF(COUNTA(A:A)<>SUBTOTAL(3,A:A),"フィルタ中","フィルタ解除中")

上の式をA列にデータのないA1セルなどに貼ると循環関数となってしまうので、A列に貼る場合は、データーが入っている(または入る可能性のあるA5セルからA1004セルまで等を状況把握して

=IF(COUNTA($A$5:$A$1004)<>SUBTOTAL(3,$A$5:$A$1004),"フィルタ中","フィルタ解除中")

という関数式を入れることで、フィルタの使用時と、未使用時(解除中)の判断をさせることが出来ます。

COUNTA またはCOUNTIFやCOUNTIFSなど) の関数は範囲内に、いくつのデーターが存在するのかを数える関数です。

SUBTOTAL という関数はデーター数がいくつ存在するかではなく、絞り込まれた結果、今、いくつのデーターが存在するのかを数える関数です。

フィルタの未使用時の絞り込みをされていない状況下では、COUNTA関数で計算された数とSUBTOTAL関数で計算された数が同じ(イコール)になり、フィルタが使用されて絞り込まれた場合には、COUNTA関数で計算された数の方がSUBTOTAL関数で計算された数より大きな数となり、イコールにはなりません。

この2つのケースを IF関数 でケース別に条件分することで、フィルタの使用の有無を判断出来ます。

マクロなどで最終行を判別させる時などで、フィルタが使用されている場合に、意図しない結果を招いてしまうケースがあり、そのようなエラーを回避するために

=IF(COUNTA($A$5:$A$1004)<>SUBTOTAL(3,$A$5:$A$1004),1,2)

などの計算式を埋め込み、そのセルの計算値が 1 だった場合には、マクロが作動しないような設定で、便利に使うことも可能です。




シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5




音楽(クラシック) ブログランキングへ

シート名をセルに表示させるエクセル関数

2016年11月13日 | ExcelなどのPC...

初期設定のシート名のSheet1などから、例えばシート名を 01月、02月 ‥‥ 12月 などのように、用途に応じて変える場合は多いかと思います。

各シートの共通のセル、例えば A1 セルに自分のシート名を表示させるための関数計算式が

=RIGHT(CELL("filename",A1),LEN(CELL("filename",A1))-FIND("]",CELL("filename",A1)))

です。

実は上の関数式の A1 の部分は、A1でなくとも、何でも良いので、セル名を入力しておけば、計算結果は同じです。

もっと言うならば、上で紹介した関数式には、特にセル名は何でも構わないい A1 が3回出てきますが、このセル名、別々に3種類の任意のセル名を入力しても、同じ計算結果になります。

各月毎など、データをシート単位で仕分けして保存しておいて、必要に応じて目的のシートの値を取り出す計算式を作る時に、シート名を呼び出すセルがあると、様々な計算式を作る際に、とても便利です。




シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5




音楽(クラシック) ブログランキングへ

西暦は4桁、月と日と時間と分は2桁で現在の日付と時刻を表示させるエクセル関数

2016年11月12日 | ExcelなどのPC...

年(西暦)の4桁は不変ですが、それ以外の月や分は必ず2桁とは限りません。

2016年11月12日15時20分のように、全てが2桁の時もありますが、2016年5月3日10時2分 のように、年以外に1桁と2桁が混在する場合があります。

各日時の桁数を統一するために、2016年5月3日10時2分を 2016年05月03日10時02分 と表示させたい場合、NOW関数だけでは、うまくいきませんので、次のような関数式を用います。

=TEXT(NOW(),"yyyy年mm月dd日hh時mm分")

これを用いることで、西暦以外の全てを2桁で統一することが可能になります。

私はこの値を表示させたセルをマクロで読み込ませて、新規保存をする時のファイル名に、自動的にファイル保存時の日付と時刻をファイル名に組み込ませますが、このような2桁表示にすることで、1月を01月とさせることで、10月、11月、12月のファイル名順の並びを、正しく整列させることが出来るので、この関数を使用しています。




シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5




音楽(クラシック) ブログランキングへ

不要な空白を全て削除するエクセル関数

2016年11月12日 | ExcelなどのPC...

上の画像のように作成者のデザイン的な意図による場合や意図しない入力ミスによりセル内に空白が入っている場合があります。

ご存知の通り、空白の有無により、エクセルで検索や照合が出来ない事態が生じてしまします。

強制的に空白を削除する関数、例として A1 セルに空白が存在していた場合には、強制的に空白を削除する関数計算式は次のようになります。

=SUBSTITUTE(SUBSTITUTE(A1," ","")," ","")

この計算式の便利な点を3つ挙げると

・半角文字の空白にも全角文字の空白にも対応します

・空白が何個あったも対応します

・そのセルに空白がなくても対応します(エラーになりません)


大切な検索の核となるようなエクセルの関数計算式を作る時には A1 の箇所を念のために SUBSTITUTE(SUBSTITUTE(A1," ","")," ","") とすることで、意図しない空白が入ってしまったことによるエラーを回避させることが出来ます。




シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5



音楽(クラシック) ブログランキングへ

今月(当月)・翌月・半年後などの月情報を表示させるエクセル関数

2016年11月10日 | ExcelなどのPC...

現在(ファイルを開いた時)の当月、翌月、半月後を表示させる関数を紹介します。

各関数式は次のようになります。 どのセルに計算式を入れる場合も変わりなく同じです。


当月(今月)
=MONTH(NOW())


翌月
=MONTH(NOW())+1


半年後
=MONTH(EOMONTH(NOW(),6))




シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5




音楽(クラシック) ブログランキングへ

別のエクセルファイルを動かす目的のためのマクロファイルの便利な活用法

2016年11月08日 | ExcelなどのPC...
以前より使っているエクセルファイルに修正などを行うために、新たにマクロ(VBA)を組み込むのは、結構、面倒な部分もあります。

それならば、以前より使っているエクセルファイルはそのままにして、そのファイルを動かすためだけを目的とした マクロ起動ファイル を作れば良いだけのことです。


これが、マクロを起動させるためだけの目的のエクセルファイルです。

どのような用途で作ったかを簡単に説明すると、4,000弱(約4,000行)の契約の諸情報を入れたデータがあります。

A列からDK列まで使い様々な情報を詰め込んでいるのですが、C列、D列、G列、H列、Q列だけは、データではなく計算式が入っています。

一つのデーター(一つの行)を削除したい時、全ての列がデータで計算式が存在しないのであれば、一気に 行削除 を行えば良いのですが、強引に行削除を行うと壊れてしまう計算式が、上に挙げた各列の計算式に入っています。

計算式を壊さないよう、計算式の入っていない列を何回かに分けて、掴んでは値のコピーを行うと、結構な手間ですし、操作ミスのリスクも生じます。

そのため、画像でお見せしたような、マクロ起動用のエクセルファイルを別途、作りました。

トータルの行数を削除したい行を入力するたけで、あとはマクロで自動的に読み取り、一瞬でコピーと値の貼り付けなどの作業を自動で行わせます。

元々のエクセルファイルは、10行目から3,793行目までデータが入っているので、マクロ起動用ファイルのC5セルとC6セルに入れた基礎情報を次のような形で、数値修正しました。



'Dim tate9010 を宣言する
Dim tate9010 As Long

'Dim tate9010 を定義する
tate9010 = Range("C5") + 9

'Dim tate9011 を宣言する
Dim tate9011 As Long

'Dim tate9011 を定義する
tate9011 = Range("C6") + 9

あとは、Dim で宣言した2つの値を元に、活用して、マクロの命令を書いていけば良いだけです。

尚、今回のように、以前より存在するマクロのない(一般)エクセルファイルと、そのファイルを動かすためだけの目的のマクロ付のエクセルファイル、この2つを、どちらのファイルを、どの場面で動かすかを、しっかりとマクロの命令を区分けする必要があります。


2つのファイルは、上のように宣言して、場面毎に、該当するファイルに対して

'マクロを記述したブックに命令する
マクロBOOK9010.Activate

'変更処理を行うブックに命令する
変更BOOK9010.Activate

と、前置きしてから命令を書き込むことで、適格な指示を行うことが可能になります。


マクロ起動用のエクセルファイルは、データが全くなく、表面上は、このように、シンプルなものです。



シリーズ
「エクセルの便利メモ」 Excelを極めるにはVLOOKUP関数を使ってはいけない
の他の記事(目次)は下記のURLとなります。

http://blog.goo.ne.jp/pizzica0912/e/2d6c432428b6d6f4708f239c9af2ffd5





音楽(クラシック) ブログランキングへ