「etTomioのトホホ日記」 2012年3月
◆2012/3/31 |
親会社から8:10と10:35にネットで送られる自動車部品の確定数。3年余り前、外部からのある方がvlookup関数で私の作っているファイルに取り込む式を書かれた。だが、それだけではデータは取り込めなかった。 いつものようにオフクロの処で焼酎を飲みながら、そこにも関数の本を置いていたので、ペラペラと捲っていたら、countif関数に目が行った。これで造れるかも知れない。翌日はリーマンショックの影響で私は休むことになっていたが、早朝から出向いて関数作りに夢中になっていた。泣きそうな思いでたったひとつのセルに何行もの関数を書いた。半日かかったと思う。 そしてその関数を全てのセルに埋め、この3年間休み亡くデータを拾い続けた。 さて、私の後継者をやって戴く若い人に週2回30分ぐらいの引き継ぎ作業を行っているが、この関数に行き当たってしまった。今更ながら、どのような意味でこの関数を書いたのか、分からないでいた。 そして3/29の夕方、私にsumif関数というのがありますよ。と伝えて来られた。えっ その関数知らない。 ネットでどういう風に使うのか調べてみた。若しかしたら使えるかも知れない。その夕方、いくつかのセルに書いてみたらデータを拾う・・・ これは使えるかも知れない。vlookupやcountifを組み合わせた複雑な式より遙かに簡単になる。だが、今までの複雑な式でも今ほどふんだんにメモリを積み、チップの処理速度が速ければそれは即座に動いていた。速度は変わらないにしても、式は簡単な方がいい。 結局昨夜と今朝で6つのファイルのあらゆるセルにこの関数を埋め込み書き換えた。テストは何度も行っているが、来週からの実践で不備な点は書き換えていく。 確定一覧の関数 =IF(IF(IF(COUNTIF(併合!$E$1:$E$69,$AW24)=1,VLOOKUP($AW24,併合!$E$1:$Q$69,6,FALSE),"")="",0,VLOOKUP($AW24,併合!$E$1:$Q$69,6,FALSE))+IF(IF(COUNTIF(併合!$E$71:$E$120,$AW24)=1,VLOOKUP($AW24,併合!$E$71:$Q$120,6,FALSE),"")="",0,VLOOKUP($AW24,併合!$E$71:$Q$120,6,FALSE))=0,"",IF(IF(COUNTIF(併合!$E$1:$E$69,$AW24)=1,VLOOKUP($AW24,併合!$E$1:$Q$69,6,FALSE),"")="",0,VLOOKUP($AW24,併合!$E$1:$Q$69,6,FALSE))+IF(IF(COUNTIF(併合!$E$71:$E$120,$AW24)=1,VLOOKUP($AW24,併合!$E$71:$Q$120,6,FALSE),"")="",0,VLOOKUP($AW24,併合!$E$71:$Q$120,6,FALSE))) ↓ これでOKかも知れないが検証していない。これはある場面ではエラーになる。使えない。 =IF(IF(COUNTIF(併合!$E$1:$E$69,$AW24)=1,VLOOKUP($AW24,併合!$E$1:$Q$69,6,FALSE),0)+IF(COUNTIF(併合!$E$71:$E$120,$AW24)=1,VLOOKUP($AW24,併合!$E$71:$Q$120,6,FALSE),0)=0,"",IF(COUNTIF(併合!$E$1:$E$69,$AW24)=1,VLOOKUP($AW24,併合!$E$1:$Q$69,6,FALSE),0)+IF(COUNTIF(併合!$E$71:$E$120,$AW24)=1,VLOOKUP($AW24,併合!$E$71:$Q$120,6,FALSE),0)) ↓ =IF(SUMIF(併合!$E$1:$E$120,$AW24,併合!$J$1:$J$120)=0,"",SUMIF(併合!$E$1:$E$120,$AW24,併合!$J$1:$J$120)) 参考 =SUMIF(検索範囲,検索条件,合計範囲) http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/sumif.htm 2012/3/31(土) SUMIF関数を使用して全てのファイルを作り替える。 |
◆2012/3/12 |
Excel メインパネルが落ちる Sub チェックメインパネル() ' 2012/3/12 T.○ ' メインパネルから操作すると不具合になるので作成したマクロ。 ' 「配布用確定一覧」で作成したものから引用。 Dim wb As Workbook Dim wblnExist As Boolean blnExist = False For Each wb In Workbooks If UCase(wb.Name) = "確定一覧・メインパネル.XLS" Then blnExist = True Exit For End If Next If blnExist Then MsgBox "「メインパネル」が開いていますのでアクティブにします。" Windows("確定一覧・メインパネル.xls").Activate ActiveWindow.WindowState = xlMaximized Else MsgBox "「メインパネル」は開いていませんので、特に何もしません。" End If End Sub Sub 確定メールから数値自動仕分け計算() ' ' 確定メールから数値自動仕分け計算 Macro ' マクロ記録日 : 2010/7/1 ユーザー名 : T.○ ' 2010/8/1 ' ' セルD24に入力した日付が確定メールフォルダにない場合の処理を追加 2010/9/4 Dim d As String Dim n As String 'd = Worksheets("メニュー2").Cells(24, 4) 'Cells(行番号,列番号) d = Worksheets("メニュー2").Range("D24") '今回はRange("セル番地")で参照する。2010/9/5 n = "ト○" & d & ".xls" If Dir(ThisWorkbook.Path & "\確定メール\" & n) = "" Then MsgBox "該当する日付はありません。" Exit Sub End If Application.ScreenUpdating = False ' 画面のちらつきを抑える処理 2011/1/3 Sheets("メニュー2").Select メール日付入力 Sheets("確定コピー").Select 確定メール読み込み workにコピーN work1 Sheets("work2").Select work2 Sheets("work3").Select work3 Sheets("集計").Select work1から3読込 空白セルだけ入力 罫線設定 'Application.ScreenUpdating = True '2011/1/3 'Application.Run "プレ○配車NN.xls!集計印刷" 頁1にコピー Application.ScreenUpdating = True '2011/10/19 頁印刷 Sheets("メニュー2").Select Range("F24").Select チェックメインパネル '「メインパネル」から操作すると、「メインパネル」が落ちるので作成。2012/3/12 End Sub |
◆2012/3/10 |
「部品在庫.xls」を書き換え Windows("部品在庫.XLS:1").Activate 昨日夕方、パソコン導入時最初に作った「部品在庫.xls」が壊れていることに気付いた。仕事のある日は必ず使っていたBookである。「確定一覧」から「出庫演算」で演算させ「部品在庫の」のデータを書き換えている。 先日から作っていた「メイン・パネル」に「部品在庫」を開く、「部品在庫」を閉じるマクロを書き込み 実行させると「部品在庫」は開くが、閉じようとすると「部品在庫」は開いていません。のメッセージ。ま、このメッセージもエラー処理として出るように作っていたのだか、何故開いていないんだ ? 毎日使っているファイルなのに… よく見るとタイトルバーに「部品在庫1」と表示されている。毎日使っているのに気付かなかった。ファイル名は「部品在庫.xls」と間違いない。試しに自動記録マクロでこのbookを閉じると Windows("部品在庫.XLS:1").Activate 何だ ? このXLS:1の拡張子は ? ネットで調べてもない。Excelの参考書にもない。途方に暮れた。毎日使っているファイルがいつの間にか変な拡張子が付いている。 こんな何年も前に書いたものを今更1から書き換える気がしない。私には究極のトホホである。 今朝、考えてみると、何年か前に会社の自分のハードディスクが壊れた。「部品在庫」は毎日使うので壊れると大変なことになる。幸いこのデータは復帰できた。しかし、この時壊れていたのではないか ? さてどうしよう。積りに積もってSheet1から9までデータがぎっしり。ふと閃いた。「部品在庫N」を作り、Sheet1から9まで、先ず「数式と数値の書式」をコピペ、次に「列幅」をコピペ、そして「書式」をコピペ。 これでデータと、数式、体裁は整った。 次にいくつかのマクロコードをテキストエディタにコピー。そして「部品在庫N」のモジュールシートに貼り付け。後は、Sheet1から9までマクロボタンを作った。 そしてそれぞれのマクロをテスト。出来た。僅か1時間弱で新しく作り直した。「部品在庫N.xls」を「部品在庫.xls」に戻した。土日を食いつぶす仕事になるかと思ったが、意外と簡単に終了。 パソコンは必ず壊れます。こまめにバックアップを取らないといけません。 |
◆2012/3/4 |
日曜日はよくTVで「そこまで言って・・・」を見ていました。それが母が入院してからは中断していましたが、今日はひとり母の家に行き、初めから終わりまで見ました。どのテーマも見応えがあり、少々重かったかなと・・・ 最新医療も取り上げていました。ま、難しい問題を討論していましたが、私に言えるのは、神の手を持つ医師は順天堂大の天野篤先生だけではありません。徳○○○病院の岡○治○先生も、1/12の9.5時間に及ぶ手術後の母を見て、まさに髪の手を持たれる先生だと思い知らされました。出血が4時間止まらなかった。脳に負荷をかけないよう体温を30度まで下げました。 母の場合天皇陛下と同じバイパス術とさらに弁置換術をしています。 ただ、その後転倒して圧迫骨折してショックを受けたのか、別人となってしまい、術を受けて良かったのかと悩み続けましたが、今こうして元に近い状態で私の部屋の下に戻っている母を見ると、やはりあの先生はゴッドハンドと言わざるをえません。 |
◆2012/3/4 |
先程紹介したEvernoteに書き込んでいる、プログラムのひとつ。先日書いたばかりのコードに加え、別のやり方で書いたもの。 実は、if then else〜else if構文はすぐに書けたものの、select caseで書き換えようとすると何度も失敗した。おかしいな・・・ select caseは何度か使ったのに・・・ それが昨日の午後パソコンに向かうとすんなり書けた。どちらの条件分岐構文でも同じ結果を出す。 Evernoteにはタグに「Excel」「VBA」「Select case」と入れています。次にselect caseで書こうとしたとき、参考になる筈です。 プレ○○ー確定表.xls Sub マ○○日付手動入力() ' ' マクロ記録日 : 2012/2/28 ユーザー名 : ettomio MsgBox ("マ○○納期が適正でなければ、" & vbCrLf & "J18 黄色のセルを修正し、再度実行して下さい !") dマ○○ = Range("J18").Value Sheets("Sheet1").Select Range("B5") = dマ○○ End Sub Sub 連休処理() ' ' マクロ記録日 : 2012/2/29 ユーザー名 : ettomio d当社 = Range("J29").Value If d当社 = Range("J30").Value Then Range("J18").Value = Range("k30").Value ElseIf d当社 = Range("J31").Value Then Range("J18").Value = Range("k31").Value ElseIf d当社 = Range("J32").Value Then Range("J18").Value = Range("k32").Value Else Range("J18").Value = Range("k29").Value End If End Sub Sub 連休処理N() ' ' マクロ記録日 : 2012/3/3 ユーザー名 : ettomio ' 上の連休処理マクロを Select〜Case で書き換えてみた。 d当社 = Range("J29").Value Select Case d当社 Case Range("J30").Value Range("J18").Value = Range("k30").Value Case Range("J31").Value Range("J18").Value = Range("k31").Value Case Range("J32").Value Range("J18").Value = Range("k32").Value Case Else Range("J18").Value = Range("k29").Value End Select End Sub |
◆2012/3/4 |
昨夜、仕事のプログラムを更新していた。そして久しぶりの夜更かしなので、もう寝ようと、ベッドに入りスマホをいじった。 あれ、クラウドサービスのEvernoteにデータがない。私は昨年の9/9に散々迷った挙げ句、WindowsPhone IS12Tを導入した。auの携帯で通していたから、当時i-Phoneの選択しはなかったし、グーグルのアンドロイドと迷ったが、結局マイクロソフトのWindowsにした。Windwsは今もってこのIS12Tしかない。 i-OSやアンドロイドはいっぱいアプリもあるのに、Windowsは余り使いたいのがない。それと買ったその日の夜、後悔したのが住所録の継続。それまでの住所録をWindows Liveに落とさなくてはならないが、これがやれauで最初に契約したときのパスワードだとか・・・ 引き継ぎのサービスは有償で3000円あまりかかると言われていたので、自分でやると持って帰り、散々苦労して住所録の引き継ぎに成功。他の機種だったら無償で引き継いでくれたろうに。 スマホに替えて、すぐに導入したアプリがEvernote、無料で1ヶ月60MBまでのデータをインターネット上にupできる。有料版は1ヶ月1GB。パソコンでネットの記事をupしたり、日記を書いたり、プログラムを書いたら後で探さなくてもいいように放り込んだり、雑誌の記事をスマホで撮影してupしたり・・・ 特に母が入院し、心臓手術して先日退院するまでは、色んな記録をupした。カミサンの勤務表も撮影しupしているし、気に入ったHPはそのまま放り込んでいる。Excelで作った表はWindowsだから見れるが関数やマクロは動かない。それでも色んな表を放り込んでいる。 それらのデータが今、1350ぐらいになっている。これがスマホで確認出来ないようでは、私のスマホの利便性はがた落ちとなる。 昨夜は電源を落として再起動したりしたが、駄目。今朝パソコンで確認すると、Vistaでも7でもデータは生きている。じゃスマホに何か障害か・・・ いったんサインアウトし、またユーザー名や、パスワードを入れてサインインした。データを読み込み始めたらしいので、30分ぐらい、充電しながらほったらかしにし、テレビを観ていた。暫くして見たら、データはみな読み込んでいる。 やれやれこれがないと私にはスマホの価値がないんだ。最近は雑誌の気に入った記事はカミサンのプリンタでスキャンしてEvernoteに放り込んでいる。 つまり、これは15年ぐらい前に自分がVBで作ったデータベースソフト「eText」のオールマイティー版だ。データはパソコンに保存ではなく、クラウド、つまりインターネット上のサーバーに保存される。クラウドサービスは他にも無料で色々あります。ただ、通信に障害が生じると・・・ |
◆2012/3/2 |
2012/3/2(金) 母退院後経過 帰宅すると、妻はすでに帰っていた。 母の話だと妻が犬の散歩に母を連れて回ったらしい。 初めは途中で駄目だろうと思っていたらしいが、 1周回って自分でも驚いたと言っていた。 それを聞いてびっくり。 その後で今日の昼、妹が掘った小芋の皮を剥いたらしい。 昨日、今日と妹が母の家の縁側に連れて行ったらしい。 驚くほどの回復だ。 夜は、自分が母を風呂に入れた。 なにせ入院してから一度も風呂には入れなかったらしく 凄く喜んでいた。 |