別に末尾シートに限ったことじゃないが、シートを削除するマクロを。
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
| マクロ
以前にIFのような使い方のCHOOSEでも紹介したが、表などから一致するデータを検索して
表示する場合には、やはりVLOOKUP関数を使うのが一般的だろうか。 ここでのポイントは『検索の型』引数に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")』と入力する。 これで基本的な年齢は算出される。 しかし図ではそれだけでもアレなので、"歳"や"ヶ月"などオマケでつけてみた。 単位部分もかなり豊富なので目的に応じた引数を入力するとよいかと。 #
by slayer0210
| 2005-12-26 17:36
| マクロ
以前に重複データ削除でも紹介したが、今回はAdvancedFilterを使ってリストから削除するマクロを。
Sub 重複削除() Range("a1").CurrentRegion.AdvancedFilter action:=xlFilterCopy, _ copytorange:=Range("E1"), unique:=True End Sub 今回は同一シートのE1セルに放出したが、場合に応じて他のシートに表示させてもいいと思う。 ActionにxlFilterInPlaceを指定すれば、その位置で実行される。 ここでのポイントはUniqueにTrueを指定し重複した行を無視して抽出する点だろうか。 #
by slayer0210
| 2005-12-26 08:35
| マクロ
下表のようなものがあって、特別手当額を表示させるときは通常は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等は不要だということだ。 CHOOSEを使うのは好みによるが、少なくとも数式的にはすっきりしてて見やすい。 しかしVLOOKUPなどを使うのが王道だとは思うが。 #
by slayer0210
| 2005-12-24 18:14
| エクセル一般
|
カテゴリ
以前の記事
フォロー中のブログ
検索
最新のトラックバック
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||