2015年4月10日金曜日

仕事で使える(かもしれない)EXCELの小技シリーズ〜VLOOKUPの結果が0のときに空白へ戻す

highschoolgirl
  VLOOKUP関数の結果が(探し当てたセルが空白なので)0と出たときに、(もと通りに)
空白へ戻すには、&""を付ければ、OK。例えば、=VLOOKUP(D2,A2:B5,2,FALSE)&""


  ここで、ちょっと一息のコーナー。

  先日、ニュースで流れた、歌手つんくさんの大学の入学式でのメッセージ--「これからもこんな私だから出来る事。こんな私にしか出来ない仕事をさせて頂こうと思っております」を聞き、彼ほどの逆境にはないが、はっとした。今の自分はどうだろうか。今の自分にしかできないことをやれているかと。そして、アップルを創ったスティーブ・ジョブスの「Stay crazy」という言葉を思い出した。こちらは大学の卒業式でのメッセージ--「他人の人生をいきるな!自分の信じたことを貫け」



 

2015年4月4日土曜日

仕事で覚えたEXCEL小技〜番外編 付箋紙

drugstoregirl
  仕事で覚えておかないといけないことをメモする。でも、紙のメモでは書いたこと自体を忘れたり、書いたもの(ノート)がすぐに出て来ないことが多い。特に、必要としているときほど、探せど探せど出て来ない。
  そこで便利なのは、パソコン(PC)のデスクトップにメモを貼付けられるフリーソフトの付箋紙。幾つかあるので、自分にあったものを選ぶ。とはいいながら、メモを「書く」と何だか、頭に残っていることが多いような気がする。そういうことで、紙のノートと付箋紙ソフトの両方で仕事の荒波を乗り越えている。

 ここで一息のコーナー。ネットでイラスト好きのつぶやきで、uniball Signo ゲルインクボールペン0.38が凄いというをみて、早速、近くのスーパーマーケットでゲット。細くて、滑らかに書けるよ。イイね。




 

2015年3月22日日曜日

仕事で使えるかもしれないMS Outlookの小技〜このメール、後でもう一度、出て来てね(スヌーズ、snooze)

flyinggirl
  仕事がとても忙しいにもかかわらず、つい、魔がさしてか、気分転換か、もしくは不安に駆られてか、新着メールをチェックしてしまったとき、あー、このメール、後でもう1回、出て来て欲しいなぁと思うことがある。

 そして、あなたが会社の方針でMS Outlookを使わされている(そういうことが日本では多いのですが)のであれば、そういうときには、目覚まし時計のスヌーズ(snooze)みたいに、後でもう1回、受信したかのようにすることができます。
 しかも、設定を変えるだけで・・。その方法は、ビューの設定で、メールに期限を設定し、アラームが上がってくるようにする、いわば、スヌーズ設定をするだけ。

詳しくは、以下のサイトで紹介(英語ですが、絵だけでもわかる)。

その1
http://kevinguyer.squarespace.com/blog/2013/3/11/outlook-fu-how-to-snooze-email-in-your-inbox.html

その2
http://www.msoutlook.info/question/796

 ただし、このスヌーズ設定をしたメールは、期限になるまで、メールフォルダからは見えなくなるので、注意が必要です。

 ま、単純にアラームを付けて、タスクのリストに入れてもよいのですが、それだと、タスクを見に行かないとわからない(期限つきでアラームを上げるようにしておけばいいのかもしれないが、チャンチャン)。

 ここで、一息のコーナーです。

 以前、初夏に世界遺産、島根の「石見銀山(いわみぎんざん)」に出掛けた。石と書いてイワ(岩)と読む。現地のボランティアガイド、曰く、「ここは見るべきものは何もないンですが、そこがいいところなんですよ」と。そのとおり、ただの山奥の洞窟だったけど、たどり着くまでの道端には彼岸花が咲き乱れ、自然が大切に残されていて、美しかった。

 



2015年3月20日金曜日

仕事で使える(かもしれない)EXCELの小技シリーズ〜REPT(repeat)関数

 すぐ忘れるけど、便利な、仕事で使える(かもしれない)EXCELの小技シリーズ。ま、ぐぐる(google)と、すぐ出てくるかも。

 Easy to forget but very useful , one of small tips on EXCEL functions. Also easy to find by google search.

 2つのセルに入った文字列を特定の記号を挟んで連結し、一定の長さの文字列を作る。
dreaming girl
そんな事態になったら、REPT(repeat)が役に立つことがあるかもしれない。

REPT(repeat) function may be useful when making character strings with the same length from two cells.


  • 例 A2セルとB2セルの文字列を間に連結する際、間に空白(ブランク)を入れて20文字にするには、=A2&REPT(" ",20-LEN(A2)-LEN(B2))&B2



 複数の文字列を繋げて一定の長さにする、あるいは、2つの文字列から一定の長さを持つ文字列を生成するといった要件は、それほどないかもしれないが、もし、必要になったら、例えば、このREPT(repeat) でブランクを埋めることで、一定の長さにできるよ。




 ここで一息のコーナー。

 そこへ行かないと出会えない地元フード。高知の松葉川温泉の香り米。炊きたてのご飯に茶豆(枝豆)のような香りして、絶品。高知の旅では、道の駅でのランチに食べた「かつおのたたき」、「チキン南蛮」が美味。ブンタン(文旦)にも出会った。

 There's local food you don't know if you've never been to there. Kaorimai of Matsubagawa Onsen in Kouchi prefecture. 



 

 

2015年2月22日日曜日

IE+VBAで仕事を効率化〜再びIE自動運転の不具合[フレーム(frame)へのアクセス拒否]の原因はWindowsパッチの自動更新 if IE+VBA failed to access(Access Denied) to a frame again!

 2015年の2月初め、VBAによるIE自動運転スクリプトが再び「フレーム(frame)へのアクセス拒否」のエラーで動かなくなってしまった。

 At the beginning of  Feb. of 2015 my IE+VBA auto-pilot intranet cursing scripts were not working due to ”Access Denied (error) to a frame”. 

 今回は、社内Webシステムの連中がセキュリティを疑うことない。迷わず、隣の席の師匠に教えを乞う。

 This time I won't doubt about that the intranet team strengthened system's security. Without hesitation, I asked my VBA master.

 師いわく、「今回は、KB3034196のWindowsパッチを外せば、OKです」。
 言われたとおりにパッチを外すと、見事に昔のように動いてくれた。さすが、師匠!なんでもご存知だ。

 My master told me " Remove KB3034196 of Windows Patch!"
 After removal of the patch as told, my script went well as before. That's just what you'd expect from him. He knows everything.

 再び、マイクロソフトは、駄目パッチを堂々と出してきたわけだ。


 MicroSoft rolled out "haunted and damned patch" again as if that could help us out but it wouldn't .


  今回も、特定のWindowsパッチ(Windows updates)の自動適用を封じるために、コントロールパネルの延長で出てくる、利用可能な更新プログラムの一覧で、今後表示しない更新プログラムを右クリックし、[更新プログラムの非表示] をクリックした。これで、一安心だね。

 To prevent the specific window's patch, in the list of available updates of Control Panel, right-click any update that you don’t want to see again, and choose Hide Update. 

 数日後、なぜか、非表示にしたはずのKB3025390は「非表示」のリストから姿を消し、KB3034196は、まんまと適用済となっていたが、ワタシの自動スクリプトは問題なく、動いているのだった。どうしたんだろう。マイクロソフトに完全に遊ばれている。マイクロソフトとの闘いが始まった。

A few days later, I don't why but hidden KB3025390 has really disappeared and KB3034196 has appeared in the installed patches list, Luckily my autopilot VBA programs are going well. What happened? Microsoft may want to play with us? Endless battles to Microsoft have begun.


2015年2月7日土曜日

EXCEL+VBAで仕事を効率化〜選択したセルの値を別のセルへコピペ

 仕事でチマチマと地味な繰返し作業をしていると、ストレスでへこんでしまう。少しでも楽をしたいなぁと思い、自分だけの特製マクロを作り続けている。
batboy
batboy

 例えば、EXCELで1つのセルの値を別のEXCEL文書(あるいは別シート)のセルへコピペする作業では、6つの操作の単純な繰返しになる。
1)マウスをコピー元のセルへ移動する。
2)マウスを右クリックする
3)コピーを選ぶ。
4)マウスをコピー先のセルへ移動する。
5)マウスを右クリックする
6)貼付けを選ぶ。
 
 地味なデータ分析など、データを色んなシートから拝借するので、膨大なコピペ作業の繰返しになることが多い。
 
 そこで、一連の操作で、特に2回の右クリックが「イラっ」とするので、VBAでコピペ用ダイアログ(COPYボタンとPASTEボタン、値エリアの3つで構成される小さいウィンドウ)を出して、右クリックの代わりに、COPYボタン、PASTEボタンをクリックだけでできるようにしてみた。

 最初に、VBAによるコピペ用ダイアログは出しておく。そして、
1)マウスをコピー元のセルへ移動する。
2)COPYボタンをクリックする
3)マウスをコピー先のセルへ移動する。
4)PASTEボタンをクリックする
セルのコピペが必要なセル総数が数個であれば、効力を発揮しないけど、数十個を超えるときは、右クリックがない分、作業が簡単になり、右クリックによるストレスがなくなる。
Sub Copy_Paste()
  UserForm1.Show(vbModeless)
  UserForm1.TextBox1.Value = ActiveWindow.ActiveCell.Value
  ActiveCell.Select
  Selection.Copy
End Sub
Sub Paste_TextBox1()
  ActiveWindow.ActiveCell.Value = UserForm1.TextBox1.Value
End Sub
 CopyボタンとPasteボタンを持つ、Userform1という名前のフォームを作成し、Copyボタンには「Copy_Paste」というマクロを、Pasteボタンには「Paste_TextBox1」をそれぞれ割当る。こんな感じ。






 ここで一息のコーナー。
 以前、ぶらり旅で鳥取砂丘を見に行った。運悪く、「砂丘フェスティバル」にブチあたり、選べるホテルが限られていた。そんな運命の糸に操られてか、「しいたけ会館」という渋い名前のホテルに宿泊することになった。名前どおり、夕食は「しいたけのフルコース」。メインのしいたけステーキは、巨大なぞうり。見た目どおり、大味。ここに泊まらねば、巡り会えない味なので、貴重な体験ができた訳だ。
 前日の島根では、「マリンタラソ出雲」というホテルに宿泊。次回はぜひ、水着を持参して宿泊したい(そのときは、貸出しを利用)。温水プールに、ジャグジーもあり、水中トレーニングができる。食事も美味しかった。何よりも、段々と沈む夕日を眺めることができて、格別。隣にある道の駅の出雲うどんとパン屋さん(小さなカフェがあり、そこでたまたま、ハワイの海で溺れかけながらも奇跡的に生還した話が隣の席から漏れ聞こえてきた。びっくりしたけど、聞こえていないふり)もおすすめ。島根では「鬼太郎の妖怪ロード」を見てきた。

2015年2月1日日曜日

IE+VBAで仕事を効率化〜新しいページを捕まえる Catch a new web page

foxman
Foxman
 VBAでIEを制御するとき、IEで新しいウィンドウが開かれる場合、そのウィンドウのIE(例えば your-web-page-title-1というタイトルを持つページ)を捕まえないとIEを制御できない。
   IEの制御が思ったとおりにできないときには、この「新しいページが作られている」という可能性を考えてみるとよい。

 その新しいページの IEを捕まえるコードが、こんな感じ。


The following codes enable you to get the control of the new IE window while a new window like "your-web-page-title-1" is open by JavaScript.   
    Set objIE = Nothing
    Set objShell=CreateObject("Shell.Application")
    For Each objWindow in objShell.Windows
      If TypeName(objWindow.document) = "HTMLDocument" Then
        Set objIE = objWindow
        Debug.Print objIE.Doucument.Title 
        If objIE.document.Title = "your-web-page-title-1"  Then Exit For
      End If
    Next
    
    1行目は、新しいIEページの内容へアクセスするための変数objIEを初期化(ゼロクリア)。
    2行目は、新しいIEページ(=ウィンドウ)を探す際、ウィンドウを巡回するための変数objShellをセット。
    3行目は、新しいIEページ(=ウィンドウ)を含む、全てのウィンドウをたぐるためにFor Each文で、9行目のNext文までで、目的のページを探す。
    4行目のIf文で、IEページがウィンドウタイプ=HTMLDocumentであることを利用して見つける。ここがポイント。
    5行目で、見つけたウィンドウを新しいIEページとして、設定。
    6行目は、デバッグのための文で、IEページのタイトルをVBAのデバッグ用エリアに出力。
    7行目のIf文で探しているタイトルを持つページかを判定し、そうであれば、For Eachのループを脱出する。そうでなければ、次のウィンドウをたぐる。これをウィンドウがあるだけ、繰り返すことになる。

     ここで、ちょっと一息。おいしい枝豆レシピ。

    ・枝豆の両端をカット(湯がとおるように)
    ・よく洗う
    ・塩をまぶし、しばらく、置く
    ・塩水でゆでる。塩の量は、4%。1500ccの水なら、60g
     (まぶすときに使う分も含む)

    I would like to introduce my favorite Japanese cuisine "edamame". Let me explain a recipe for cooking tasty edamame. First, cut both ends off the pods and wash until clean. Then, stir in some salt, leave for a awhile, and then boil for 4 minutes in a big pan of salted water. The salt should be 4 % all the water (including when stirring); for example, 60 grams of salt for 1500 cc of water.