SSブログ
アクセスカウンター
Microsoft Office Excel ブログトップ

Excelの関数のIF文で、”IF”省略?? [Microsoft Office Excel]

とんでもなく久々の投稿です。では早速「まさか[あせあせ(飛び散る汗)]」の本文に。

 「IF構文で作成するのだから、当然"IF"を書くのは当たり前でしょうよ!
それが構文てことでしょうに!」と叱られそう。

・・・ですが、戻り値が"True"、"False"の関数の場合、各々"1"または"0"の数値として
そのまま計算式に利用でき、更に"IF"という文字列を省略できるのです。
 分りにくいかと思いますので、次に例題を示して説明します。

【例題】
A1セルの値が「3」の時は「3」、それ以外の数値の時は「0」を返す計算式を考えます。

【回答1】通常のIF文
=IF(A1=3,A1,0) または =IF(A1=3,3,0)? 〔余計なコメント〕”0”は省略できるのは有名[わーい(嬉しい顔)]

【回答2】"IF"文字省略本命バージョン
=(A1=3)*A1 または =(A1=3)*3

いかがでしょうか?ほかの関数、MOD等でもお試しいただければ幸いです。
知らない人が見ると「なんじゃこりゃ~!」間違いなしです。

nice!(0)  コメント(0) 
共通テーマ:仕事

EXCELでオーバーバー(オーバーライン、上バー)を入力する。 [Microsoft Office Excel]

 いわゆる"X"の上に" ̄"(バー)を表示するエックスバーなどの文字を入力する方法を紹介します。ググると上位ヒットするのが、数式を使ったり、外字を作って入力したり、もしくはふりがなを利用する方法ですが、自分がやっている方法で、もう少し簡単な入力の仕方を紹介します。
 使うのは、下線(Ctrl+U)ボタンAlt+Enter(セル内改行)そして下揃えボタン3つです。要するにスペースにアンダーバーを付けて、上下表示させるだけです。既にどこかのページで紹介されているとは思いますが、とりあえず手順を説明しておきます。
【手順1】下線ボタンを押す。

【手順2】任意のセルにスペースを入力、続けてAlt+Enter、そして”X”を入力します。

【手順3】入力したセルをダブルクリックし、"X"を右から左にドラッグして反転させ、下線ボタンを押す。

 (Xだけ下線を解除する)

オーバーバー1_VGA.png

【手順4】下揃えボタンを押す。

 (セル高さを調整しても表示されるようにするため)
【手順5】任意のセルの高さに調整します。標準フォントなら15まで縮小できます。

オーバーバー2_VGA.png
以上です。

EXCELの計算結果が合わない。 [Microsoft Office Excel]

EXCEL.jpg 文字列の計算式をセルに入力し、計算結果を返すTextcalcのような機能を持たせたマクロを使用しています。
実際に使用しているものは、任意のセル名を自動定義・削除したり、通常の計算式ではエラーとなる「//」や「()」などの記号が付いた変数を使用可能としたりしているので、少し複雑なものです。
 例えば、「ABC(D1//5)」という変数を取り扱ったりできるものです。こちらは特殊システム用に作成したものなので、今回は一般的な課題について触れることにします。
【例題】
 文字列式「’2/60*0.6」を「=TRUNC(2/60*0.6,6)」に自動変換して別のセルに代入する。

 文字列式前後に"=TRUNC("と",6)"を追加するだけですので、簡単ですね。
 関数電卓でも同じ答えなので何の問題もないと思われたのですが、この計算式で計算結果が異なる事象が発生しました。

【計算結果1】0.02 【計算結果2】0.019999

 EXCELや関数電卓では前者となりますが、社内システム(詳細には言えません)は後者となってしまいます。
これはEXCELは「倍精度関数(Double)」で、社内システム内部の方は「10進型(Decimal)」の計算になっていることによる差ではないかと踏んでいます。因みに四則演算の電卓では後者となります。

 VBA(EXCEL)では、Decimalで変数宣言はできず、各々の数値をCDec関数で変換するも、これをマクロで実現するには複雑になってしまいます。

【対策】
 切り捨て(TRUNCやROUNDDOWN)を前提とした場合、計算式の答えが、「0.99999...」などとなるケースについてのみ発生するので、必ず割り算が存在します。そこで、割り算を優先的に先に計算し先に切り捨て処理を行ってから他の計算をするという方法をとりました。

 =TRUNC(TRUNC(2/60,12)*0.6,6) ---- 【計算結果2】となる計算式

 上式少数桁指定の"12"は、"15"までは同じ答えを得ることが出来ます。"16"にすると【計算結果1】になってしまいます。
 マクロ上では、四則演算記号を”,”付の文字列に変換(Replace)して分解し、Arrayとして変数(Variant)に代入。ループ処理で"/"を挟む数値である"2"を"TRUNC("+"2"、"60"を"60"+",12)"に編集する処理をしました。

 固い頭で考えています。他に良い方法があるかもしれません。以上、参考まで。

追加処理が必要でした!


タグ:Excel VBA

改ページすると罫線が表示されない件 [Microsoft Office Excel]

改ページ罫線.jpg Excelのマクロから入り、VBAを始めてからもう20年近くになります。もう良い年なので、ひらめきも遅く、どう効率よく処理していくかWeb情報が頼りです。案外このカテゴリーも向いているんじゃないかと始めました。とりあえず最近気になった解決方法について記述します。

 項目数により下線(xlEdgeBottom)を増減、改ページは自動挿入する処理をしていますが、このままだと2ページ目の最上部外枠が表示(印刷)されません。私は、改ページの挿入に次の処理を加えて解決しました。
上線(xlEdgeTop)では、前ページの最下段で同様の現象が生じます。

 解決方法: ページをまたがる2行をSelectして、中間線(xlInsideHorizontal)を引く。

これで解決です。心配な人は、まずマニュアル操作で確認してみてください。
 因みにマニュアル操作なら、上線もしくは下線を引き直すと表示されるようにはなりますが、何故かマクロ処理では無理でした。


Microsoft Office Excel ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。