2015年1月1日木曜日

Blog Top Page

2013年5月11日土曜日

心の奥底からおすすめしてみたい書籍


やはり、だれもが知っているようなことだけしか知らないのでは、エンジニアとしてどうなんだろう。
ってとこがあるので、ちょっぴり一般的な切り口とは異なる書籍を読んでみるのもありだと思うんですよね。
そんな意味あいで、おもしろそうな書籍のメモをしておきます。

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

Excelだからって、Excel内の閉じた世界だけで処理をするだなんてもったいなさすぎますよね。
社内のイントラにアクセスしてある値を定期的に取得してグラフ化するのでもありだと思いますし
ネット上のデータをうまく活用できますよ!ってのも一つの武器だと思います。
そういった意味でこういった著書がありなのではないでしょうか?


Excelで使うMySQL活用ガイド

ExcelでDatabaseを操作するのであれば、Accessかな?SQL Serverかな?
なんて思ってしまうかもしれませんが、MySQLでもいいじゃない!
ということで、ExcelVBAからMySQLって選択肢もあるんですね。
残念ながら、この書籍は手元にないのでどのような内容かはしらないのですがちょっと気になりますね。

こちらもMySQLに触れているようです。
VBA for Professionals Excelデータベーステクニック Excel 2000~2003・2007対応




Excel VBAによるWin32 APIプログラミング入門

だんだん凝ったことを実現しようとすると、VBAの能力だけでは解決できなくなり、
WindowsAPIだったらできるのになぁと思うことがでてきます。
ただ、いきなりWIndowsAPIに手を出せるほど簡単な話ではないと思います。
そういった人が入門的な立ち位置として読むのにおすすめな書籍だと思います。

同様に、ExcelVBAのみではないですが下記もおすすめです
Win32 APIのしくみ―Windows開発環境「C++、VB、Delphi、VB.NET」からの利用法 (I・O BOOKS)




Excelプロフェッショナルエンジニアテクニック

ExcelVBAでは、自分の書いたソースコードマクロから変更することも可能となっています。
ただ、デフォルトではそんなことはできません。ツール⇒マクロ⇒セキュリティーの中に
「Visual Basicプロジェクトへのアクセスを信頼する」
というチェックボックスがあります。これをオンにするとVBProjectというオブジェクトにアクセス可能となり
ソースコード自体にアクセスすることが可能となります。
つまり、開発環境を便利よくすることができるわけです。
そういったことに興味があるかたにはこの書籍がおすすめだと思います。



Excel VBA パフォーマンスレポート (Something U want)

ある程度コードを書いていると、いろんな書き方を覚えていき一つのことを実現するにあたって
複数の方法が思いつくようになると思います。そうなった場合どちらが早いのだろう?
と思うことでしょう。
そういった疑問の解決する手助けとなるのがこの書籍だと思います。
ただ、数十万ループで初めてちょっとの差が出るものが多かったりするのですが
こういった視点をもつことはだいじだと思いますし、チェックする考えも大事だと思います。
結構、ネットに記載された情報をうのみにしてこれこれ使うと遅いからねー
と、いいはる人もいますんでそれは数十万ループをまわさないと差がでないですよ?
とか言い返せたらベストですよね。



Excel Hacks 第2版― プロが教える究極のテクニック140選

ExcelVBAというよりExcelがメインの書籍ですが、最後のほうにExcelVBAものっています。
結局、手動で操作(Excel)することを自動かするのがVBAなのだからExcelについて詳しくなっておくのも大事ですよね。
かなりマニアックなテクニックが掲載されていますので、おすすめします。
個人的には、APIを使ってExcelを半透明にする内容は面白かったですね。



ExcelVBAでできる RPGゲーム作成入門

最初におすすめした下記書籍は、
Excel VBAゲーム大作戦〈1〉はじめてのゲームプログラミング
Excel VBAゲーム大作戦〈2〉実戦!ゲームプログラミング
いろんなゲームを通しそのゲームで使用されているテクニックをちょっとずつ紹介するというスタイルになっています。
ピンポイントに技術を知ったとこで、何を作ろうかと悩ましく思ってしまうのに対し
一つのゲームに対し隅から隅までどっぷり解説しているのが「RPGゲーム作成入門」です。
いろんなテクニックを組み合わせるとこんなことができるのかという体験ができると思います。
確実にExcelVBAの可能性を見直すことになると思います。



Excel VBAゲーム大作戦〈1〉はじめてのゲームプログラミング
Excel VBAゲーム大作戦〈2〉実戦!ゲームプログラミング


ExcelVBA関係で最初に買った書籍がこの書籍でした。
あきらかに、入り口を間違えています。
当時、Excelでゲームを作りたかったわけでなく、Excelでもこんなことができるんだ。
という、サプライズ間にひどく気に入ってしまい、その結迷うことなく買ってしまいました。
ビジネスで使うようなテクニックとはほど遠い内容になりますが、VBAでの表現の可能性を
大きく広げてくれることになると思いますし、技術なんてどういう視点でどこに使うかの発想しだいなので
その気になれば使いどころはいろいろあると思います。

ExcelVBAは入門するのに敷居が低いだけに、コードをかける人は山ほどいます。
他の人と差別化をはかりたい!
なんて思っているのならなおさら普段と違う切り口の書籍を読むといいと思いますよ。

2013年4月13日土曜日

[VB.NET]MessageBox


■構文
MessageBox.SHow(text[, caption] [, button] [, icon] [, defaultButton])

■名前空間
System.Windows.Forms

■説明
メッセージボックスを表示します
第一引数:メッセージボックスに表示するテキスト。
第二引数:(省略可能)メッセージボックスのタイトルバーに表示するテキスト。
第三引数:(省略可能)メッセージボックスに表示されるボタンを指定する。
第四引数:(省略可能)メッセージボックスに表示されるアイコンを指定する。
第五引数:(省略可能)メッセージボックスの既定のボタンを指定する。

第三引数ボタンについて
MessageBoxButtons.AbortRetryIgnore[中止][再試行][無視]ボタン
MessageBoxButtons.OK[OK]ボタン
MessageBoxButtons.OkCancel[OK][キャンセル]ボタン
MessageBoxButtons.RetryCancel[再試行][キャンセル]ボタン
MessageBoxButtons.YesNo[はい][いいえ]ボタン
MessageBoxButtons.YesNoCancel[はい][いいえ][キャンセル]

第四引数アイコンについて
MessageBoxIcon.Error[警告]アイコン
MessageBoxIcon.Stop
MessageBoxIcon.Hand
MessageBoxIcon.Quesion[問い合わせ]アイコン
MessageBoxIcon.Exclamation[注意]アイコン
MessageBoxIcon.Warning
MessageBoxIcon.Information[情報]アイコン
MessageBoxIcon.Asterisk
MessageBoxIcon.Noneアイコンなし

第五引数デフォルトボタンについて
MessageBoxDefaultButton.Button1第1ボタンを規定とする
MessageBoxDefaultButton.Button2第2ボタンを規定とする
MessageBoxDefaultButton.Button3第3ボタンを規定とする


サンプルコード
Imports System.Windows.Forms 'MessageBoxが所属している名前空間をImport
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        MessageBox.Show("メッセージ") 'メッセージのみ表示
        MessageBox.Show("メッセージ", "タイトル") 'メッセージ、タイトルを表示
        MessageBox.Show("メッセージ", "タイトル", MessageBoxButtons.OKCancel) 'OK, キャンセルボタン
        MessageBox.Show("メッセージ", "タイトル", MessageBoxButtons.YesNo) 'はい、いいえボタン
        MessageBox.Show("メッセージ", "", MessageBoxButtons.OK, MessageBoxIcon.Error) '警告アイコン
        MessageBox.Show("メッセージ", "", MessageBoxButtons.OK, MessageBoxIcon.Question) '問い合わせアイコン
    End Sub
End Class


■ボタンの戻り値について
ボタンの戻り値は、DialogResult列挙型となっています。
何のボタンを押された確認する時は以下を使用するとよいです。
名前空間は、System.Windows.Formsです。

DialogResult.Abort中止ボタン
DialogResult.Retry再試行ボタン
DialogResult.Ignore無視ボタン
DialogResult.OKOKボタン
DialogResult.Cancelキャンセルボタン
DialogResult.Yesはいボタン
DialogResult.Noいいえボタン

閉じるボタンは、OKボタンのみの時はOKを返し
キャンセルボタンが表示されている時は、キャンセルを返します。
Imports System.Windows.Forms 'MessageBoxが所属している名前空間をImport
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Call SampleMessageBox()
    End Sub

    Sub SampleMessageBox()

        Dim Ret As DialogResult
        Ret = MessageBox.Show("", "", MessageBoxButtons.AbortRetryIgnore)
        Call IsButton(Ret)

        Ret = MessageBox.Show("", "", MessageBoxButtons.OK)
        Call IsButton(Ret)

        Ret = MessageBox.Show("", "", MessageBoxButtons.OKCancel)
        Call IsButton(Ret)

        Ret = MessageBox.Show("", "", MessageBoxButtons.RetryCancel)
        Call IsButton(Ret)

        Ret = MessageBox.Show("", "", MessageBoxButtons.YesNo)
        Call IsButton(Ret)

        Ret = MessageBox.Show("", "", MessageBoxButtons.YesNoCancel)
        Call IsButton(Ret)

    End Sub

    Sub IsButton(ByVal Button As DialogResult)

        If Button = DialogResult.Abort Then
            Debug.Print("中止ボタン")

        ElseIf Button = DialogResult.Retry Then
            Debug.Print("再試行ボタン")

        ElseIf Button = DialogResult.Ignore Then
            Debug.Print("無視ボタン")

        ElseIf Button = DialogResult.OK Then
            Debug.Print("OKボタン")

        ElseIf Button = DialogResult.Cancel Then
            Debug.Print("キャンセルボタン")

        ElseIf Button = DialogResult.Yes Then
            Debug.Print("はいボタン")

        ElseIf Button = DialogResult.No Then
            Debug.Print("いいえボタン")

        ElseIf Button = DialogResult.None Then
            Debug.Print("閉じるボタン")

        End If

    End Sub
End Class

[VB.NET] 関数一覧


System.Windows.Forms
関数内容名前空間
[M]
MessageBox(text [, title] [, caption] [, button] [, icon])メッセージボックスを表示System.Windows.Forms

2013年4月7日日曜日

[VB.NET]日付間隔を求める


■日付間隔を求める
Module Module1

    Sub Main()

        Dim DateStart As DateTime = DateTime.ParseExact("2013/04/01", "yyyy/MM/dd", Nothing)
        Dim DateEnd As DateTime = DateTime.ParseExact("2014/04/08", "yyyy/MM/dd", Nothing)

        Console.WriteLine(DateEnd.Subtract(DateStart).ToString)

    End Sub

End Module

[VB.NET]日付、時間の加減方法について


■日付、時間の加減方法について
Module Module1

    Sub Main()

        Dim DateTimeObj As DateTime = DateTime.ParseExact("2013/01/31", "yyyy/MM/dd", Nothing)

        Console.WriteLine("ベースの日時{0}", DateTimeObj.ToString)

        Console.WriteLine("□日付の加減算")
        Console.WriteLine("1年後 - {0}", DateTimeObj.AddYears(1).ToString)
        Console.WriteLine("1年前 - {0}", DateTimeObj.AddYears(-1).ToString)

        Console.WriteLine("来月 - {0}", DateTimeObj.AddMonths(1).ToString)
        Console.WriteLine("先月 - {0}", DateTimeObj.AddMonths(-1).ToString)

        Console.WriteLine("明日 - {0}", DateTimeObj.AddDays(1).ToString)
        Console.WriteLine("昨日 - {0}", DateTimeObj.AddDays(-1).ToString)

        Console.WriteLine("□時間の加減算")
        Console.WriteLine("1時間後 - {0}", DateTimeObj.AddHours(1).ToString)
        Console.WriteLine("1時間前 - {0}", DateTimeObj.AddHours(-1).ToString)

        Console.WriteLine("1分後 - {0}", DateTimeObj.AddMinutes(1).ToString)
        Console.WriteLine("1分前 - {0}", DateTimeObj.AddMinutes(-1).ToString)

    End Sub

End Module

[VB.NET]その月に含まれる日数を取得する


■その月に含まれる日数を取得する
Module Module1

    Sub Main()

        Dim yyyy As Integer = DateTime.Now.Year
        Dim LastDay As Integer

        For mm As Integer = 1 To 12

            'その月に存在する日数を取得
            LastDay = DateTime.DaysInMonth(yyyy, mm)

            Console.WriteLine("{0}年{1}月は、{2}日あります", yyyy, mm, LastDay)

        Next

    End Sub

End Module

□出力結果
2013年1月は、31日あります
2013年2月は、28日あります
2013年3月は、31日あります
2013年4月は、30日あります
2013年5月は、31日あります
2013年6月は、30日あります
2013年7月は、31日あります
2013年8月は、31日あります
2013年9月は、30日あります
2013年10月は、31日あります
2013年11月は、30日あります
2013年12月は、31日あります

[VB.NET]文字列から日付オブジェクトを生成する


■文字列から日付オブジェクトを生成する
Module Module1

    Sub Main()

        Dim DateStr As String
        Dim FormatStr As String
        Dim DateTimeObj As DateTime

        DateStr = "2013-04-07[21:23:06]"
        FormatStr = "yyyy-MM-dd[HH:mm:ss]"
        DateTimeObj = DateTime.ParseExact(DateStr, FormatStr, Nothing)

        Console.WriteLine(DateTimeObj.ToString) '2013/04/07 21:23:06

        DateStr = "20130407212306"
        FormatStr = "yyyyMMddHHmmss"
        DateTimeObj = DateTime.ParseExact(DateStr, FormatStr, Nothing)

        Console.WriteLine(DateTimeObj.ToString) '2013/04/07 21:23:06

        'フォーマットが一致しない場合FormatExceptinの例外を出すのでエラー処理を含めて記述すると
        Try
            DateStr = "20130407212306"
            FormatStr = "yyyyMMdd" 'フォーマットが一致していない場合
            DateTimeObj = DateTime.ParseExact(DateStr, FormatStr, Nothing)

        Catch Ex As System.FormatException
            Console.WriteLine("フォーマットが一致していません")
            End
        End Try

        Console.WriteLine(DateTimeObj.ToString)
    End Sub

End Module

□出力結果
2013/04/07 21:23:06
2013/04/07 21:23:06
フォーマットが一致していません

[VB.NET]閏年か調べる


■閏年か調べる
Module Module1

    Sub Main()

        Dim LeapYear As String

        For yyyy As Integer = 2000 To 2010

            LeapYear = IIf(DateTime.IsLeapYear(yyyy), "閏年です", "閏年じゃないです")

            Console.WriteLine("{0}年は、{1}", yyyy, LeapYear)

        Next

    End Sub

End Module

□出力結果
2000年は、閏年です
2001年は、閏年じゃないです
2002年は、閏年じゃないです
2003年は、閏年じゃないです
2004年は、閏年です
2005年は、閏年じゃないです
2006年は、閏年じゃないです
2007年は、閏年じゃないです
2008年は、閏年です
2009年は、閏年じゃないです
2010年は、閏年じゃないです

[VB.NET]日付オブジェクトから年,月,日,曜日、時,分,秒,ミリ秒を取得する


■日付オブジェクトから年,月,日,曜日、時,分,秒,ミリ秒を取得する
Module Module1

    Sub Main()

        '日時のオブジェクトを取得
        Dim CurrentDate As DateTime = DateTime.Now

        Console.WriteLine(CurrentDate.ToString) '2013/04/07 21:23:02

        'オブジェクトから日付を取り出す
        Console.WriteLine(CurrentDate.Date.ToString) '2013/04/07 0:00:00
        '↑日付のみ欲しければ DateTime.Today.ToStringでOK

        'オブジェクトから年を取り出す
        Console.WriteLine(CurrentDate.Year.ToString) '2013

        'オブジェクトから月を取り出す
        Console.WriteLine(CurrentDate.Month.ToString) '4

        'オブジェクトから日を取り出す
        Console.WriteLine(CurrentDate.Date.ToString) '7

        'オブジェクトから曜日を取り出す
        Console.WriteLine(CurrentDate.DayOfWeek.ToString) 'Sunday


        'オブジェクトから時刻を取り出す
        Console.WriteLine(CurrentDate.TimeOfDay.ToString) '21:23:02.8366205

        'オブジェクトから時を取り出す
        Console.WriteLine(CurrentDate.Hour.ToString) '21

        'オブジェクトから分を取り出す
        Console.WriteLine(CurrentDate.Minute.ToString) '23

        'オブジェクトから秒を取り出す
        Console.WriteLine(CurrentDate.Second.ToString) '2

        'オブジェクトからミリ秒を取り出す
        Console.WriteLine(CurrentDate.Millisecond.ToString '836)

    End Sub

End Module

[VB.NET]時間を計測する


■処理時間等を計測する
Module Module1

    Sub Main()

        'オブジェクトの作成
        Dim StopWatch As New System.Diagnostics.Stopwatch()

        '■時間を止めずに計測時間を出力
        Console.WriteLine("■時間を止めずに計測時間を出力")

        StopWatch.Start()

        System.Threading.Thread.Sleep(250) '時間のかかる処理の代わり

        Console.WriteLine(StopWatch.ElapsedMilliseconds) '時間を止めずに出力

        System.Threading.Thread.Sleep(250) '時間のかかる処理の代わり

        Console.WriteLine(StopWatch.ElapsedMilliseconds)


        '■計測を止める & 初期状態に戻す
        StopWatch.Reset()


        '■処理ごとに時間を停止する
        Console.WriteLine("■処理ごとに時間を停止する")

        StopWatch.Start()

        System.Threading.Thread.Sleep(250) '時間のかかる処理の代わり

        StopWatch.Stop()

        System.Threading.Thread.Sleep(500) '時間のかかる処理の代わり

        StopWatch.Start()

        System.Threading.Thread.Sleep(250) '時間のかかる処理の代わり

        StopWatch.Stop()

        Console.WriteLine(StopWatch.ElapsedMilliseconds)

        '■処理ごとに時間をリスタートさせる
        Console.WriteLine("■処理ごとに時間をリスタートさせる")

        StopWatch.Start()

        System.Threading.Thread.Sleep(250) '時間のかかる処理の代わり

        StopWatch.Stop()

        System.Threading.Thread.Sleep(500) '時間のかかる処理の代わり

        StopWatch.Restart() 'Reset() + Start()

        System.Threading.Thread.Sleep(250) '時間のかかる処理の代わり

        StopWatch.Stop()

        Console.WriteLine(StopWatch.ElapsedMilliseconds)

    End Sub

End Module

ElapsedMillisecondsは、整数値(ミリ秒)で返します
■時間を止めずに計測時間を出力
251
501
■処理ごとに時間を停止する
499
■処理ごとに時間をリスタートさせる
250

Elapsedは、時間間隔で返します
■時間を止めずに計測時間を出力
0:00:00.2510036
0:00:00.5010052
■処理ごとに時間を停止する
0:00:00.4995031
■処理ごとに時間をリスタートさせる
0:00:00.2500041



[VB.NET] VB.NET ALL



[VB.NET]指定した時間停止


■指定した時間だけThreadを停止させる
'一秒間(1000ミリ秒)停止する
System.Threading.Thread.Sleep(1000)

[VB.NET] Top Page



2013年1月5日土曜日

[Excel] AVERAGEA関数


■構文
AVERAGEA(数値1,[数値2], ...)

■説明
平均を求める関数

AVERAGE関数と何が違うのでしょうか?
改めてAVERAGE関数の確認です。
AVERAGE関数の場合、数字以外が書き込まれたセルは無視されます。
例えば、
A1セル→3
A2セル→5
A3セル→
A4セル→0
の場合(A3は未入力状態を示してます)
=AVERAGE(A1:A4)は、
(A1 + A2 + A4) / 3 を計算しています。

数字以外が書き込まれたセルは無視されます。
つまり、この前フリをしたってことはAVERAGEA関数は数字以外を認識します。
文字列→0
TURE→1
FALSE→0
として計算をします。
以上を踏まえて下の絵を見てみましょう。

上の3つはAVERAGE関数です。
で、下の2つがAVERAGEA関数です。



2行目は、(0 + 0 + 0)/3 = 0 を計算してます。
3行目、4行目は数字が入力されていないので分母が0となりエラーとなっています。

一方AVERAGEA関数の方ではエラーとなっていません。
何かしらの数字として認識しているからです。
6行目は、(1 + 1 + 1)/3 = 1 を計算しています。
7行目は、(0 + 0 + 0)/3 = 0 を計算しています。

※AVERAGEA関数も未入力セルは数値として扱いません。
なんだかんだ、説明はしてみたものの
なかなかこの関数を使うシチュエーションってみあたらないですよねぇ 汗

[Excel] AVERAGE関数


■構文
AVERAGE(数値1,[数値2], ...)

■説明
平均を求める関数

平均を求めるのに使う関数です。
ここで言う平均とは相加平均(足した要素の数で割って求める方法)です。

例えば、身長でも測定してその平均でも求めるとしましょう。


引数は、レンジで指定しても個別に1セル1セル毎に指定することもできます。
=AVERAGE(C3:C8) は、
=AVERAGE(C3,C4,C5,C6,C7,C8) と同じことです。
注:個別に指定できるセルの数は30個です。それ以上指定すると
「この関数に対して、多すぎる引数が入力されています。」と言った
エラーメッセージが表示されます。

ちなみに、レンジで指定した場合、数字以外が書き込まれたセルは無視されます。
上の絵では欠席と書かれたセルは無視されてます。
よって、別の関数を駆使して表現しようとすると
=SUM(C3:C8)/COUNT(C3:C8)
と同じことです。

[Excel] ASC関数


■構文
ASC(文字列)

■説明
全角文字を半角に変換する関数

文字列中の全角は、半角に変換されます。
ただし、半角文字が存在しない場合(漢字/ひらがな)は、何も変化がおきません。

下の絵では、英全角のみ/全角+半角カナ/全角カナ/全角記号の挙動を示してます。



この関数が何に使えるかってことなんですが…
例えば、英語の問題で日本語を英語に
直しなさいという問題があったとします。



B2セルもB3セルも両方ともappleで正解なわけですが
B2セルは半角で入力されていて、B3セルは全角で入力されてます。
半角であろうが全角であろうがappleに変わりはありません。

両方正解でないとおかしいのですが、C列の式には
半角のappleで判定するようにしてる為、B3の全角
appleは不正解となってます。

じゃ、OR関数を用いて半角でも全角でも正解にすればよいのでは?

=IF(OR(B3="apple",B3="apple"),"正解","不正解")


となるけども、半角も全角もOKにすると
appleのように全角と半角を混ぜて入力されると対応しきれません
(そんな入力の仕方しないと思いますが…)

そんなわけで、B列を参照する際にASC関数かJIS関数であらかじめ
全角文字または半角文字に統一しておけば、上記問題は解決できそうですね。



(※上記のappleは、全角で入力してあります)

今は、ALL小文字の場合で話しましたが、大文字の場合は?
って、なりそうですが、それは、LOWER関数かUPPER関数を使う
と大文字または、小文字へ変換できますので同様に解決できます

[Excel] AND関数


■構文
AND(論理式1,[論理式2], ...)

■説明
全ての論理式がTRUEの時TURE値を返す関数

AND式の引数である全ての論理式がTRUEの場合
AND関数はTRUEを返します。
下記に簡単な使用例を示しておきます。


B4セルの場合は、B2=1 も B3=2 のそれぞれの論理式は
共にTRUEなのでAND関数としてTRUEを返してます。
B5セルの場合は、最初の論理式がFALSEなので、
AND関数としてFALSEを返してます。

実際のところは、IF文などで、よく使うので
IF文に絡めた使用例でも示しておきます。
下の図は、某XR○Aに登録時のチェック項目をいくつか拝借して真似たところです。



セルC9には、以下の式が入力されてます。

=IF(AND(B3="○",B4="○",B5="○",B6="○",B7="○"),"規約を遵守&サーバーへ仮登録できます","あなたは、仮登録できません")


AND関数がTRUEを返すには、B3~B7まで全て○が入力されてないといけません。
まだ、最後の項目に○が入力されてないので、IF関数は、FALSEを受け取った
際の挙動を示しています。



全てに○を入力するとIF関数がTRUEを受け取った際の挙動を示しています。

[Excel] ABS関数


■構文
ABS(数値)

■説明
絶対値を求める関数


例えば、
A1セルに3
A2セルに-5
A3セルに9
A4セルに-1
A5セルに0

B1セルに=ABS(A1)
B2セルに=ABS(A2)
B3セルに=ABS(A3)
B4セルに=ABS(A4)
B5セルに=ABS(A5)と入力すると下記図のようになりますね。

■サンプルコード


と、言ったものの実験データとかで使うならまだしも
それ以外だとなかなか使わなさそうなんで使い道を考えてみました。
例えば、仮にこんなクイズ番組があったとします。

「日本バリバリバリュー」とかいいですねぇ 汗
(聞き覚えがあるタイトルなのは、気のせいです…多分)

でもって、ある人の特集をしていてその人が
身につけていた腕時計の値段はいくらか?
みたいな問題があったとして、その値段に一番近い人が正解とした場合



なんか、それっぽい使い方ができましたねぇ 汗

[Excel] 関数 一覧


[A]
ABS(数値)絶対値を求める関数
AND(論理式1,[論理式2], ...)絶対値を求める関数
ASC(文字列)全角文字を半角文字に変換する