Home > ソフトウェア

ソフトウェア Archive

ExcelでMINIFとMAXIFを使おう

仕事でExcelの関数で条件付きMINが必要になった。

もともと標準関数の中に条件付き合計値を出すSUMIF関数があるが、MINIF関数やMAXIF関数は無い。何故だ!
本当に無いのかよおい?と検索していたらmagnitude6さんが作っているのを発見。やはり同じことを考えている人がいた。先生ありがとう!

magnitude6さんが作ったMINIF関数とMAXIF関数は検索範囲をWhileで回すものだが、前にWhileを使ったときにFor Eachの方が早かったような気がしたので、magnitude6さんの関数を一部変更してFor Each版を作ってみた。
結果は自分が持ってたデータで検索範囲が100行くらいだと処理時間が半分くらいになった。データ量によっては効果がないかも。

使い方は、ScanCellsに検索対象のセル範囲(1列)、KeyWordにScanCellsから検索するデータ、CalcColumnにMaxまたはMinを判定する列番号(1列)を指定すればOK。
CalcColumnの列番号を数えるのが面倒。magnitude6さんと同じくセル範囲にして、先頭セルの列番号を計算した方が良かったかな。

[MAXIF関数]

Function MAXIF(ScanCells As Range, _
               KeyWord As Variant, _
               CalcColumn As Integer) As Variant
    ' 条件付きMax関数

    Dim TrgCel As Variant
    Dim TrgRow As Variant
    Dim MaxVal As Variant
    Dim ChkVal As Variant
    Dim CmpVal As Variant

    MaxVal = "<MAXIF_INITIAL_VALUE>"

    For Each TrgCel In ScanCells
        ChkVal = TrgCel.Value
        If ChkVal = KeyWord Then
            TrgRow = TrgCel.Row
            CmpVal = Cells(TrgRow, CalcColumn).Value
            If Not IsNull(CmpVal) Then
                If CmpVal <> "" Then
                    If MaxVal = "<MAXIF_INITIAL_VALUE>" Or _
                       MaxVal < CmpVal Then MaxVal = CmpVal
                End If
            End If
        End If
    Next

    If MaxVal <> "<MAXIF_INITIAL_VALUE>" Then
        MAXIF = MaxVal
    Else
        MAXIF = ""
    End If

End Function

[MINIF関数]

Function MINIF(ScanCells As Range, _
               KeyWord As Variant, _
               CalcColumn As Integer) As Variant
    ' 条件付きMin関数

    Dim TrgCel As Variant
    Dim TrgRow As Variant
    Dim MinVal As Variant
    Dim ChkVal As Variant
    Dim CmpVal As Variant

    MinVal = "<MINIF_INITIAL_VALUE>"

    For Each TrgCel In ScanCells
        ChkVal = TrgCel.Value
        If ChkVal = KeyWord Then
            TrgRow = TrgCel.Row
            CmpVal = Cells(TrgRow, CalcColumn).Value
            If Not IsNull(CmpVal) Then
                If CmpVal <> "" Then
                    If MinVal = "<MINIF_INITIAL_VALUE>" Or _
                       MinVal > CmpVal Then MinVal = CmpVal
                End If
            End If
        End If
    Next

    If MinVal <> "<MINIF_INITIAL_VALUE>" Then
        MINIF = MinVal
    Else
        MINIF = ""
    End If

End Function

Windows Vista

上司が空いているパソコンにWindows Vistaをインストールした。

インストールした後で設定に詰まっていたので手伝ったが、ユーザーインタフェースが大きく変わったので戸惑った。
Windows XPで大きく変えたユーザーインタフェースをまた変えるとは、Windows XPのユーザーインタフェースは良くなかったと判断したのだろうか。
使う側としてはやっと慣れたところで振り出しに戻されたようで嫌な感じだ。

Windows XP vs Mac OS X

ITmediaにIntel Mac上でのWindows XPとMac OS Xのベンチマークに関する記事が掲載

Windows XPとMac OS Xの両プラットフォームに対応するBONICクライアントとQuickTimeの両方ともWindows XPの方が速い結果となっていた。
パフォーマンスよりも多くのプラットフォームで動くことを目指しているBONICクライアントはまだしも、パフォーマンスも問われるQuickTimeでWindows XPの方が速いというのは驚いた。何よりQuickTimeはアップル純正だ。
昔からマルチメディア系はMacと言われていたが、少なくともパフォーマンスはWindows XPの方が上と分かってしまった。アップル派の人にとっては知りたくなかった現実だろうか。

アップル純正Windows起動ツール

PC Watchにアップル純正のWindows XP起動ツールBoot Campに関する記事が掲載

Boot Campのインストール後にWindows XPをインストールすることで起動時にMac OSとWindows XPの選択をすることができるそうだ。
10年くらい前に無骨なATマシンではなく、MacでWindowsが動かないかと夢見たことがあったが、まさかその日がやってくるとは思わなかった。
しかし、所詮WindowsはWindowsであり、Macのハードウェアデザインとは相容れないものがある。
今後、アップルがMacのデザインに相応しいWindows XPのテーマを提供してくれるのと期待したい。

Portable Sleipnir

フェンリルがPortable Sleipnirをリリース

USBメモリなどで持ち運ぶことを想定し、機能やプラグインを圧縮して約5MBのディスク容量で利用が可能となった。
しかし、いまどきのUSBメモリは128MB以上が主流だ。最新のSleipnirでもディスク容量は12MB程度しか使用していないので、機能を減らしてまでディスク容量に拘る必要があったのか疑問だ。
USBメモリでの運用をステップとして、携帯電話上で使用することを見据えているのだろうか。

Becky! v2.23以前にバグ

窓の杜にBecky! v2.23以前にメールが異なる宛先に送られるバグに関する記事が掲載

v2.22.02からv2.23までに、特定のタイミングでメールが指定した宛先とは別の宛先に送られてしまうらしい。
IMAP4方式でメールを定期送受信すると、新着メール受信の画面更新とメール送信の宛先決定処理が干渉し、送信メールの宛先が別のものに入れ替わるとのこと。
過去にメールを送ったのに届いていないと言われたことがあったので、もしかしたらこれが原因かもしれない。

ThumbWin v1.1.1

ThumbWin v1.1.1がリリース

主な変更点はシングルクリックでの復帰、除外リストの設定、メニュー言語(english)の追加、その他は見栄えやユーザーインターフェースなど。
要望を送った除外リストの設定が追加されているのは嬉しい。nPOPのような基本的にタスクトレイ上で動かすアプリケーションを登録することができる。
ちょっと動作が重い気もするが、かっこいいので常用を開始しよう。

セキュリティと使い勝手

PC WatchにウォークマンAとCONNECT Playerに関する記事が掲載

ここまで酷評されているのは久しぶりに見た気がする。
自分もOpenMGを使ったSonicStageを使っていたが、バックアップするのにネットワーク認証が必要と知らずに復元できなかったことがあった。
基本的に著作権保護などのセキュリティを高くすることは使い勝手を悪くすることだと思う。使い勝手とセキュリティの両方を高くすると、今度は個人情報が守れなくなる。
いかにセキュリティと使い勝手を両立するかが今後の課題となるが、そこはソフトウェア技術者とネットワーク技術者の腕の見せ所だ。

各社セキュリティソフトレビュー

PC Watchに各社セキュリティソフトがSony BMGのrootkitを検出するかのレビュー記事が掲載

もうすぐNorton Internet Securityの更新時期が来るので、更新するか他社に乗り換えるかの良い判断材料になる。
と思ったら、候補としていたNorton Internet Security 2006、NOD32McAfee VirusScan 2005はどれも挙動が同じで大差なさそうだ。
世間の評判ではNorton Internet Security 2006は動作が重く、NOD32とMcAfee VirusScan 2005は比較的軽いと言われている。
乗り換えるのが面倒でNorton Internet Securityを使って来たが、そろそろ思い切って乗り換えるのもいいかもしれない。

ThumbWin

窓の杜にウィンドウのサムネイルをデスクトップ上に表示するThumbWinに関する記事が掲載

ウインドウを最小化するとサムネイル化したものをデスクトップ上に表示し、サムネイルをダブルクリックすることで元のウインドウに戻すことができる。
面白そうなのでさっそくインストールして使ってみたが、少し動作が重いのと、最小化するとタスクトレイに入るアプリケーションまでサムネイル化してしまうのが気になった。
見栄えはいいと思うので、タスクトレイに入るアプリケーションはサムネイル化しない設定が追加されたら常用してもいい。

ホーム > ソフトウェア

検索
フィード
メタ情報

Return to page top