人気ブログランキング | 話題のタグを見る

末尾シートの削除

別に末尾シートに限ったことじゃないが、シートを削除するマクロを。
Sheets(Sheets.Count).Delete
基本的にはこの一文で済む話だが、シート削除する際に警告画面がでる。
この画面が面倒くさい場合は、
Sub シート削除()
 Application.DisplayAlerts = False
  Sheets(Sheets.Count).Delete
 Application.DisplayAlerts = True
End Sub

この様にApplication.DisplayAlertsを使用するとよい。
ここでは、Sheetsを使用したが、Worksheetsでも良いと思う。
(SheetsとWorksheetsでは微妙だが・・・)
# by slayer0210 | 2006-01-08 17:16 | マクロ

表から検索し表示する(VLOOKUP関数)

以前にIFのような使い方のCHOOSEでも紹介したが、表などから一致するデータを検索して
表示する場合には、やはりVLOOKUP関数を使うのが一般的だろうか。
表から検索し表示する(VLOOKUP関数)_e0080122_18263757.gif

ここでのポイントは『検索の型』引数にTRUEを指定する点だろうか・・・
TRUEに指定すると、検索値未満の値で検索してくれる。

また、VLOOKUPなどで検索する場合はかならずといっていいほど、検索する範囲を記した別表が必要だが、配列定数を使用すると別表が不要となる。
例えば上図の場合だが、セルD3に
=VLOOKUP(C3,{0,"なし";100,"1万円";200,"2万円";300,"5万円"},2,TRUE)
などと直接入力すれば大丈夫だ。しかし、検索範囲が広いと面倒くさいが、式的にもシート的にもスッキリとしていて見やすくなる。
また、配列定数は、列を『,』、行を『;』で区切る。さらに別表と思しき範囲は{}で囲まねばならない。

しかし、別表を作ったほうが明らかに早くできそうだ。
# by slayer0210 | 2005-12-26 18:38 | エクセル一般

年齢計算

年齢や経過年数などを調べるにはDATEDIF関数を使うと便利だ。
この関数は、ダイアログボックスが使用できないのでセルに直接入力となる。

下図の場合は、C2セルに『=DATEDIF(B2,TODAY(),"Y")』と入力する。
これで基本的な年齢は算出される。
しかし図ではそれだけでもアレなので、"歳"や"ヶ月"などオマケでつけてみた。
年齢計算_e0080122_17345651.gif

単位部分もかなり豊富なので目的に応じた引数を入力するとよいかと。
# by slayer0210 | 2005-12-26 17:36 | マクロ

重複した行を削除する(AdvancedFilter)

以前に重複データ削除でも紹介したが、今回はAdvancedFilterを使ってリストから削除するマクロを。
重複した行を削除する(AdvancedFilter)_e0080122_825479.gif

Sub 重複削除()
 Range("a1").CurrentRegion.AdvancedFilter action:=xlFilterCopy, _
 copytorange:=Range("E1"), unique:=True
End Sub

今回は同一シートのE1セルに放出したが、場合に応じて他のシートに表示させてもいいと思う。
ActionxlFilterInPlaceを指定すれば、その位置で実行される。
ここでのポイントはUniqueTrueを指定し重複した行を無視して抽出する点だろうか。
# by slayer0210 | 2005-12-26 08:35 | マクロ

IFのような使い方のCHOOSE

下表のようなものがあって、特別手当額を表示させるときは通常はIFやVLOOKUPなどを使う場合が妥当だ。
IFでやる場合は『=IF(C3=300,"5万円",IF(C3>=200,"2万円",IF(C3>=100,"1万円","なし")))』のような数式を作る(個人的だが)。だけど、何個もIFを入れ子していくと自分がなにをやってるか見失う場合も多い。

よって今回はCHOOSEを使ってみた。
D3セルに『=CHOOSE(C3/100+1,"なし","1万円","2万円","5万円")』と入力。
ここでポイントとなるのはインデックスとしてC3/100+1を使用する点だろうか。
またこのインデックスは小数点以下の値でも整数部分だけが使用されるのでINT等は不要だということだ。
IFのような使い方のCHOOSE_e0080122_18751100.gif

CHOOSEを使うのは好みによるが、少なくとも数式的にはすっきりしてて見やすい。
しかしVLOOKUPなどを使うのが王道だとは思うが。
# by slayer0210 | 2005-12-24 18:14 | エクセル一般