なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

提出管理とデータ集計

f:id:nazuna_0124:20180630133051p:plain

ピボットテーブルっているものがあるんですよ!!



おつかれさまです。なずなです。


今回もこんなことがあったよ!!という

小学生の日記です。



表題の件ですね。やっぱりどこも

Excelで提出ってのが多いです。



Excelでの提出をさせるにあたって、

入力制限をするために変なつくりになる。


集計に工数VBAが欲しくなる。



提出確認をしようにも、マスターデータがない。


ファイル名の形式などが統一されてないので

関数レベルではチェックがしにくい。



などなど、ルールが決まってないので苦労している点が

多々あります。



さて、こういうのをなんとかするのは

既にやり飽きているので方法論などはまたいずれ。



この辺を周囲に共有したほうがいいかの方向性が

今回の愚痴のメインです。


SESに限らず日本のサラリーマンは

変に工数削減しないほうがいい場合が多いです。



わたしみたいな考え方身につけると

どんくさいのにいらいらしちゃうのですよね。。。



また、そもそも生産性を上げようという前提がないので

どう教えてよいものかもちょっと迷ってます。



前職ではOJT形式で教えるだけで済んだのは

そういう前提は共有できていたからですし。



ん~ なんかいい案ぷりーず!

スケジュール管理、進捗管理をどうしよう

f:id:nazuna_0124:20170319171727p:plain

台風の影響はだいじょうぶでしたでしょうか?


わたしは睡眠薬でぐっすり寝ていたので、

気が付かないうちに通り過ぎてしまった感じです。



おつかれさまです。なずなです。


今日は結論なし。役に立つ情報もありません

わたしが困ってるというだけのはなしです。



いや、ほんとどうしたらいいの?



進捗管理の対象が複数なのはいいんです。


こっちの環境も複数なのがつらい。



そしていつも通り、好きにフリーソフト使えない


今までこういうのをVBAで解決してきたんですが、

Windowsじゃないプラス、重いからできれば避けたい付き。



すべてをテキストファイルでなんとかしようとしてみてますが、

やっぱりExcelは絡んでくる



ひとまず、誰かの連絡待ちというのが一番面倒ですね。


ちゃんと返事くれてるかチェックしなきゃいけないので



WindowsLinuxMacに共通した何かが欲しいわけです。


今のところの最有力はPhthonさんです。



ライブラリを好きにいれていいのか不明なのが難点。


それが解決したら、この子を嫁にしようとおもいます。

現役インフラエンジニアが教えるVBA講座~6.文字列を扱う①~

f:id:nazuna_0124:20180609224553p:plain

このあたりまでは一気に書き溜めていた

講座のつづき。



おつかれさまです。なずなです。



今回は文字列関係の1回目。

どっちかっていうと文字列の条件分岐ですね。



覚えるのみ。そしてしょっちゅうつかいます!



6.文字列を扱う

引き続き基礎勉強になります。
文字列の扱い方は非常に重要です。

極端なことを言えばデータとは文字を決まったルールに
したがって並べただけのものです。

この扱い方、どう扱っていくかを覚えるだけで
できることの幅がとても広がります。

文字の条件分岐

[まとめ]
    ・VBAの比較は 文字 = 文字 イコールです。
    ・LIKE演算子があります。*(ワイルドカード)使えます。
    ・正規表現は参照設定すれば可。ここでは扱いません。


まずはA1セルからA10セル程度まで適当に文字をうめてください。

aaa
ereare
braer
eree
eee
aerea
arae
aerer


みたいなのでオッケーです。


最初に1列をdebug.printする処理を作ります。

```VB
Sub sample1()
Dim sh As Worksheet

Set sh = Worksheets("Sheet1")

Dim i As Long

i = 1

Do While sh.Cells(i, 1).Value <> ""

    Debug.Print sh.Cells(i, 1).Value

    i = i + 1
Loop

End Sub
``` VB

### 通常の条件分岐

    数字と一緒です。 = と <> です。

```VB   
Sub sample2()
Dim sh As Worksheet

Set sh = Worksheets("Sheet1")

Dim i As Long

i = 1

Do While sh.Cells(i, 1).Value <> ""

    If sh.Cells(i, 1).Value = "aaa" Then
        Debug.Print sh.Cells(i, 1).Value, "一致", i

    Else
        Debug.Print sh.Cells(i, 1).Value, "不一致", i
    End If


    i = i + 1
Loop

End Sub
```


### ○○が含まれる。

2種類扱います。Like と inStrです。

補足としてLikeはVBSでは使えないことを軽く覚えておいてください。


#### Like
    Q. 文字「ra」が含まれる行数をdebug.printしてください。

    ```VB
    Sub sample3()
        Dim sh As Worksheet

        Set sh = Worksheets("Sheet1")

        Dim i As Long

        i = 1

        Do While sh.Cells(i, 1).Value <> ""

            If sh.Cells(i, 1) Like "*" & "ra" & "*" = True Then
                Debug.Print i

            End If

            i = i + 1
    Loop

    End Sub

    ```

    Like のところの書き方をおぼえるだけです。

    *はワイルドカードというやつ。なんでもオッケーの意味です。

    = True は省略可能です。


    あ! True or False の話してないかも。。。
    正しいか、正しくないかの2択です。なんとなく雰囲気でOKです。

    [補足]
    もう少し柔軟な使い方ができる演算子です。
    ぐぐって確認してみてください。

    ただし、あまりこれで複雑なことはしないのを推奨です。


### inStr


```VB
Sub sample4()
    Dim sh As Worksheet

    Set sh = Worksheets("Sheet1")

    Dim i As Long

    i = 1

    Do While sh.Cells(i, 1).Value <> ""

        If InStr(sh.Cells(i, 1).Value, "ra") > 0 Then
            Debug.Print i & "行目", InStr(sh.Cells(i, 1).Value, "ra") & "文字目"
        End If

        i = i + 1
    Loop

End Sub
```

書き方が妙にややこしくなりました。

まず判定が0より大きければになっています。

これはInStrがある文字列に、文字が含まれている開始文字数を返してくるためです。

なければ0が帰ってきます。

覚えておくとたまーーーに便利です。

今回はここまで!

いろいろ文字を変えたりして、希望の表示になるか 確認してみてください。

時間と期間で見たタスクの切り分け

f:id:nazuna_0124:20180630133051p:plain

だんだん仕事がエンジニアから遠のいていく

管理職なりたいとか言ってるので、

方向性は間違ってないと思われます!!



おつかれさまです。なずなです。



仕事が複数またがっているせいもあって

管理、把握が大変です。


また、ちょっとした業務分析的なお仕事も

ふってきてます。



というわけで、仮まとめの回。



期間内ルーチン

一定期間以降~期間内で実施する日課のこと。


以降~じゃないと開始できないのがポイント。


要するに忘れたりするってことです。



デイリールーチン

今日中に終わらせる、だいたいいつもやってること。

文字通りの日課


サラリーマンたるものこれがないというのも

実はよくありません。



これの負担が大きいと残業の原因になります。



今日中タスク


メールを出しておく、ポストに入れるとかそういうの。


開始のトリガーが決まっていなくで、締め切りが今日中のもののこと。


期限内ルーチンが今日終わってなければここに以降したりします。


返答待ちタスク

誰かの結果を待っている状態のタスク。


メールだったり電話だったり。


自分が気が付かなったり相手が忘れていたり

進捗確認という別のタスクが発生します。



締め切り未定タスク

タスクって呼ぶのかどうかが微妙ですが。


締め切りは相当先、ただ今やってもよい。


自分が今日やると決めれば今日中タスクになるけど、

先延ばし可というやつ。


自己啓発タスク

事実上、やらなくてもいいもののこと。

やっぱりタスクと呼ぶのかはおいておきます。


期間内ルーチンがルーチンとはいうものの、自分は不慣れだから

前もって調べておくとかそういうやつです。

緊急タスク

文字通りですね。今すぐやる、なるはやでというもの。


これ自体はやればいいんですが終わる時間によって

ほかのタスクが影響を受けるのが注意です。



とりあえずこんなかんじかなー。

一応、この中のうち何が新人に振りやすいのか

整理したいという気持ちです。(やるとはいってない

現役インフラエンジニアが教えるVBA講座~5.条件分岐

f:id:nazuna_0124:20170406201732p:plain

ひぃぃぃいいい!!!

背中がぞわぞわする


こっそり講座名変えてみました。

苦手な単語が2つも入ってます



インフラエンジニアがいまだにしっくりきません。

だって名刺に書いてあるもん!!

そういってるのは私じゃないのでいいとして。



教えるってのがすごく苦手です。

いつもは知見共有とか言い始めます。


がんばって慣れます。

おつかれさまです。なずなです。



本日はいつ書いたか忘れた講座のつづき。

こういうのは他の方が詳しくやってくれてるので

ぐぐってください


5.条件分岐

人はなぜプログラムを使うのか!
条件の判断を何回やっても間違えることがないから!!

というわけで条件の分岐方法です。

○○だったらXXXするというやつですね。

国語ないしは数学(論理?)が必要な分野でもあります。
なにはともあれ純粋な書き方から。


if 条件 then

end if

です。Select case 文は当面おぼえなくていいです(キッパリ


かつ、または、の演算子はAnd と or なのでVBAはわかりやすいです。

if 条件 and 条件2 then


elseif 条件3 then


else


end if


ざっくりとした書き方はこんな漢字。

数字の条件分岐

これまでの九九は使ってオッケーです。
シートに入力しておきましょう。

ちょー基本というやつです。九九の表で奇数だけ色を変える
処理を作ってみましょう。

書き方いろいろありますからね!

'
Sub OddNumInQuQu() Dim r As Range

    For Each r In Worksheets("Sheet1").Range("A1:I9")

        If r.Value Mod 2 = 1 Then
            r.Interior.Color = vbYellow         
        End If
    Next
End Sub


ここでついでに覚えてください。
VBAで加えた変更はCtrl + Z で戻りません!!

変更する前にちゃんと保存しましょう。


さて、次です。
九九なので当然すべてが数字なんですが、
適当なマスに「ああ」でも「b」でも文字列いれて再度実行してください。


エラーがでて起こられます。
ローカルウィンドウとか見てください。

みたまんま、文字列は割った余りとか計算できないということです。


ここでは軽く覚えてください。
**想定した「データ形式」でないと正常に動かない場合がある。**

そういうときはどうするか。
今回は数字であればよいので数字かどうかを判定します。


ここからぐぐってオッケー。
判定用の関数があるのでそれを使います。


```VB

Sub OddNumInQuQu2()
    Dim r As Range

    For Each r In Worksheets("Sheet1").Range("A1:I9")
        If IsNumeric(r.Value) = True Then
            If r.Value Mod 2 = 1 Then
                r.Interior.Color = vbYellow

            End If
        End If
    Next

End Sub

```

ifが1個追加されました。
これを入れ子っていいます。

条件に一致したものがどんどん中に入っていくイメージです。



↑ココマデ



冒頭でも若干触れてますけど、なぜプログラムにするのか!!

書いたとおりの条件分岐は間違えないからです。


ここではまだ覚えなくていいです。


確認するデータの型が違う、そもそも条件間違ってるなど

プログラマ本人は間違えるってことだけ!

管理職になるためのハードル

f:id:nazuna_0124:20170319171727p:plain

さ、さ、さ、さむい!!!

仙台は寒いですよ!!

周りに言いふらしてます。



おつかれさまです。なずなです。



給料あげるため管理職になろうと

決めたはいいけど、どうすればいいんでしょう???



さて、今回は実利的な話ではなく、

精神的なおはなし



やっぱり部下を信じて任せることができないと

なれないもんなのかもですねー。



任せるって部分ですね。

わたしはできてるつもりでした。


実際のところ、かなり能力を見極めないと任せないので

もっと盲目的に任せられるようにならんとだめなのでしょう。



よしあしはともかく、それができずに管理職になってしまうと

自分がつぶれてしまうのでしょう


というわけで、当面の目標。

ぜんぶまかせる!!

ツイッターで知り合った方とお茶してきました

f:id:nazuna_0124:20180609224553p:plain

いや~ 秋風気持ちいですねー!!

ちょっと雨続きでジメっとしてる日が多いですけれど。



おつかれさまです。なずなです。



さてさて、我らがポリテクセンター同期生では

卒業後も定期的にお茶会を開いていました。

飲み会ではありません



会社はそれなりにでも現場はブラックとかありますし、

逃げ道確保のために横の繋がりを強化している意味もあります。


あとは技術交換的なお話。今だと、運用管理、構築、開発に

分かれてて、いろんなお話できます。



話はちょっと戻って、Twitterでなんとなく検索していたら

仙台でエンジニアになりたいとプロフィールに書いている人が

いるじゃ、あ~りませんか。(最近Re:ゼロみてます)



ぽちっとDMで誘ってみたら、初参戦決定!!

わ~~ ぱちぱちぱち。



土曜の昼間から喫茶店でコーヒー飲みながら

だべってました。



ふ~む、いろんな状況の人いておもしろいですねー。



しばらく定期開催していこうと思います!


参加希望の方はお気軽にTwitterで声かけてくださいね!



仕事場に技術を語る人がいなくてさみしいなんて人も

大歓迎ですよ!