fc2ブログ
 

Technology へようこそ
ここは技術者の「経験」と「ノウハウ」のブログです


2008年11月28日

ショートカット

私は業務で、エクセルを使用した作業台帳のようなものを
メンテナンスしているのですが、
そのエクセルファイルのセルに作業日を入力する項目があります。
先日、いつものように日付を入力していたところ、
「ctrl」+「;」でシステム日付が入力できますよ。
と、若い彼に教えられました。
メニューバーにも出てこないショートカットですし、
えらく感動してしまいました。
ちなみに「ctrl」+「:」でシステム時刻が入力できます。

小ネタですが、頻度が高ければお試しください。
[ posted by S.S ]
スポンサーサイト





2008年09月01日

VLOOKUP

仕事の関係上、最近エクセルを使うことが多いのですが、
今まで簡単な計算程度位(SUM、IF・・・)にしか使ったことがなく
結構苦労してます。

大量に色々な資料を作成しており、各資料をリンクさせる
必要がある為、「VLOOKUP」関数を多様しています。

つい先日、このVLOOKUPのせいで無駄な時間を費やしてしまいました。
(まぁ、私の知識不足?ではありますが・・・)

AブックとBブック内にある、シート同士の先頭列の「機能№」という
数字の項目をリンクさせてある項目を表示させようと試みたところ、
ナゼか「#NAME?」と出てしまうのです。
式は間違ってないはず・・・
試しに、「挿入 - 関数 - VLOOKUP - ・・・」と手順を追っても
やっぱり出来ない!

ナゼだ!

見た目は一緒・・・
色々と試してみたが、何度やっても同じ・・・
・列を追加して中身だけコピーしてみたり
・エクセルを再起動してみたり
・PCを再起動してみたり
・新しいシートで試してみたり
・新しいブックで試してみたり
などなど・・・

違いは判明。新しいブックで完全手入力をすれば出来る・・・
ということは・・・
セルの書式の問題か!
と、思ったらどちらも「標準」ではないか!
しかも、書式はそんなに関係なさそう・・・
ナゼ??
でも、よく見ると片方は左詰、もう片方は右詰。(左右の設定は標準)
前者は文字列認識、後者は数値認識。
こりゃ、何かある!
でも、「標準」

もう限界・・・

とりあえず、問題のある列の左側に列をコピーすると
同じ書式になる(?)ので、新しいまっさらな列を
コピーしてきて追加。
値は一度、エディタにコピペしてから
再度コピーしなおして新しい列にペースト。

お~出来た!

でも、ナゼ出来なかったんでしょう?
自分の見えないところで何か力が働いていたいのか?!
もしかして、バグ?

まぁ、何はともあれ、解決したので「良し」としましょう!
これ以上は、時間がもったいないので調べません。
解決方法さえ判明すればもう大丈夫!
時間の無駄です。

暇な時に調べよう!ということにしておいてください。
覚えてれば・・・

[ posted by T.K ]


2007年01月11日

Scroll Lock

Excel2000を使っています。今やっている仕事の課題表、
つまり不具合やユーザ要望による修正課題の管理をExcel
ブックで行っているのですが、元々Excel2003で作成された
ブックのため、フィルタが効かない(指定した列のフィルタ
リングがうまく動かない)のです。これはこれでしょうがない
とあきらめているのですが、あるタイミングから画面のスクロ
ールとカーソルの移動の同期が取れなくなりました。画面を
スクロールさせてもカーソルがついてこないのです。

ブック自体のメンテナンス(課題、ステータスの書き込みなど)
は各自が行いますが、Excel2000でのシートの追加、セルの書式
変更は既存の設定が消えてしまう恐れがあるため、プロジェクト
の管理者(Excel2003を使用)がやっています。

また新しい設定を追加した影響かなあ・・・。

次の日・・・ちゃんとカーソルがついてくるじゃないですか!

「ブックの変更、しました?」

管理者に尋ねると「していませんよ。」

犯人は「Scroll Lock」だったのです。画面のハードコピーを
取ろうとして「PrintScreen」の右側のキーを押してしまって
いたのです。



2006年08月21日

過去の自分に助けられ・・・。

Excel-Oracle連携も大詰め。
作成したシートの細かいチェックを終えてほっと一息。
さあ、テスト仕様に結果を記入すべく、ブックを開いた
ところ、

「あれ?」

肝心のシートがありません。削除してしまったのか?
削除してしまったとなると戻せません。ごみ箱探しても
無いですし。
作成するのには大して時間はかからないにしても、同じ
ものを再度作成するのは結構キツかったりするものです。

「まてよ?非表示にしてあるかも?」

数日前のテストで、複数のブックを開いていると変な動き
をしていたことを思い出しました。この処理にはシートを
非表示にする命令が含まれているのです。

「えーっと、どうやるんだっけ?」

以前、blogのネタにしておきながらもう忘れています。

「あった!非表示になってた!」

自分の書いたblogに助けてもらうとは・・・。


2006年08月18日

性能改善

社内では「性能改善」が旬です。
性能改善といってもいろいろなやり方がありますから・・・

・ハードの見直し
・DBの見直し
・アプリケーションの見直し

などなど。
ハードを2ランクくらい上げちゃう、なんていうのはよくある
ようであまりない。
実質はDB配置の見直しとか、SQLの見直し、処理の見直しなど
やればやるほどお金がかかるシロモノではあります。

原因として一番お金がかかるのは「DB設計の見直し」ではないで
しょうか?


2006年08月17日

Excelブックを特定する

ExcelVBAの作業中です。
テスト中に変な動きをすることに気がつきました。
予め、全然関係ないブックを開いていたりするとそのブック
に対して処理が行われてしまいます。

Workbook(1).Active

怪しいのはこの部分です。対象ブックがいくつめに開かれる
のかわからないのにこの書き方はまずい。

Workbook("ブック名").Active

で事なきを得たのですが、VBAってやればやるほど奥深いというか
最近はセルのRange指定も文字列連結して処理したりしています。
ただ、以前は使えたメソッドが(同じバージョンなのに)今回は
エラーになる、というのはどういうことなのか・・・。
理解に苦しむ今日この頃です。


2006年03月29日

マクロの実行防止

Excelのマクロは便利なものですが、少し前に世間を賑わしたマクロ
ウィルスなどのように便利な機能ほど悪用されることが多いようです。

最近は何かにつけて「責任の所在」が欧米化し、自分の身は自分で守る
ことがあたりまえになりつつあります。

マクロの実行可否については、[ツール]-[マクロ]-[セキュリティ]の
「セキュリティレベル(S)」タブで実行可否が設定できます。

「高」にすると証明書付きマクロ以外は実行されなくなります。

「中」にするとブック起動時に実行するかどうかを聞いてきます。

「低」にすると無条件実行されます。

また、不明な作成者からの署名付きマクロで、署名が有効な場合
でも、設定を「高」にしておけば認証に関する情報を記載した
ダイアログ ボックスが表示され、ユーザが「信頼する」という操作
をしない限りマクロは実行されません。

でもマクロを作成して実行したいのにいちいち上記の設定を確認しな
ければならないというのは・・・しょうがないことですが。




2006年02月24日

VBAの保護

シートの保護という意味では、昨日紹介したシートを[表示しない]
の設定を行い、さらに[シートの保護]を行えば他人の改ざんを防止でき
ます。

よくあるのは、何かの計算シート(データベースの見積りを行うための
シートなど)を作成して、お客様に提供する場合ですが、VBAを作成
して保護したい場合もパスワードを設定して保護することができます。

VBAエディタを開き、[ツール]-[VBAProjectのプロパティ]で、[保護]
タブを選択し、「プロジェクトのロック」にチェックし、パスワードを
設定すれば次回、VBAのコードを参照しようとしてもパスワードの
入力が求められます。

しかし、パスワードを忘れてしまうと・・・当然ですが。




2006年02月23日

シートの非表示

Excelには[シートの非表示]という機能があります。
計算式や計算元データを触られたくない、という場合などに便利
なのですが、ちょっとクセがあります。

シート全体を選択して、[表示しない]をいろいろな場所で探して
みても、出てきません。[ウィンドウ]-[表示しない]はブック全体を
非表示にするので目的は達成できません。どうするかというと・・・

ある行を選択(例えば10行から20行)し、右クリックします。すると、
[表示しない]が出てくるのでこれをクリックするとその部分のみ非表示
にすることができます。この状態でシート全体を選択し、さらに右クリ
ックすると・・・[表示しない]が出てくるのです。
これでシートの非表示ができます。

元に戻す場合は[書式]-[行]-[再表示]を行えば出てきますが、この場合
も、ある行を選択し、[表示しない]を実行した直後(つまりシート全体
を非表示にしていない場合)は再表示できないのです。一旦、シート
全体を非表示にしてからだと、ちゃんと[再表示]されます。

不思議ですねえ・・・。


2006年02月06日

セル内の改行

セル内に改行を入れる場合、[Alt]+[Enter]を入力しますが、VBAで同じ
ことを行う必要があり、調査してみました。

A4セルを選択し、"エク" [Alt]+[Enter] "セル" と入力してみたので
すが、以下のようなマクロが作成されました。

Range("A4").Select
ActiveCell.FormulaR1C1 = "エク" & Chr(10) & "セル"
With ActiveCell.Characters(Start:=1, Length:=5).Font
.Name = "MS Pゴシック"
.FontStyle = "標準"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With

なるほど、[Alt]+[Enter] は Chr(10) なんですね。