スナックelve 本店

バツイチ40代女の日記です

あれとこれを数えたいの・・・

f:id:elve:20200312181542p:plain
こういうのが・・・10000件くらいあるとするじゃないですか。
んで、担当者ごとのグループの数と個人の数の合計を知りたかったんすよ。
(グループ番号ってのは別のファイルから引っ張ってきてる。)
そんで今までやってたマクロでは
グループ番号順に並び変えて

  • 担当者コードで抽出
  • 別シートにグループ番号コピー
  • ①重複削除して数える
  • ②グループ番号空欄を数える
  • ①+②

で出してました。
メイン処理こんな感じで

Sub Macro1()
    Debug.Print "===START===:" & Timer
    Sheets("Sheet2").Select
    Dim myCode: myCode = Sheet2.Range("A2:A32")
    Call Sheet1.最終行設定
    Debug.Print "===SORT===:" & Timer
    Call Sheet1.グループ番号でソート
    Debug.Print "===LOOP===:" & Timer
    Dim outputRow As Long: outputRow = 2
    Dim code
    For Each code In myCode
        Call Sheet1.担当者コードで抽出(CLng(code))
        Call Sheet3.重複削除
        Cells(outputRow, 2).FormulaR1C1 = _
            "=COUNTIFS(Sheet1!C[-1],"""",Sheet1!C[1]," & code & ")+COUNT(Sheet3!C[-1])"
        Cells(outputRow, 2).Copy
        Cells(outputRow, 2).PasteSpecial Paste:=xlPasteValues
        outputRow = outputRow + 1
    Next
    Debug.Print "===END===:" & Timer
    
End Sub
処理 timer かかった時間
===START=== 68871.06 0.02
===SORT=== 68871.08 0.86
===LOOP=== 68871.94 10.16
===END=== 68882.1 11.04

実際にはもっとデータ複雑で120秒くらいかかってたの(´Д⊂グスン

そこで教えて偉い人!!

おぉ、目から鱗。ふむふむふむふむ?←おいw

Sub Macro4()
    Debug.Print "===START2===:" & Timer
    Sheets("Sheet2").Select
    Dim myCode: myCode = Sheet2.Range("A2:A32")
    Call Sheet1.最終行設定
    
    Debug.Print "===SORT2===:" & Timer
    Call Sheet1.数値に置き換えてソート
'
    Debug.Print "===SET_FORMULA===:" & Timer
    Call Sheet1.数式設定
    Sheets("Sheet2").Select
    Range("C2").FormulaR1C1 = "=COUNTIF(Sheet1!C[2],RC[-2])"
    Range("C2").AutoFill Destination:=Range("C2:C32")
    Debug.Print "===END===:" & Timer
End Sub

これで

処理 timer かかった時間
===START2=== 74775.55 0.02
===SORT2=== 74775.57 0.15
===SET_FORMULA=== 74775.72 0.64
===END=== 74776.36 0.81

ポイントはソートする前に数値に置き換えることと
countifの範囲を極力狭くすること。
f:id:elve:20200312205542p:plain

実際のものは120秒→20秒くらいにスピードアップ!! やったね!!
ちゅんちゅん様!! ありがとうございます!!

ZOZOMATで薦められた靴を買おう(?)

計測については
snack.elve.club

ZOZOTOWNでログインすると計測結果も見れます。
f:id:elve:20200311214605p:plain

(…)ってのをクリックすると
f:id:elve:20200311214835p:plain

おススメの靴が見れる
f:id:elve:20200311215011p:plain

ニューバランスを薦められるが・・・
f:id:elve:20200311215108p:plain

エアマックスを購入。paypayモールで買った・・・。
f:id:elve:20200311215257p:plain

そう、ヤフオクに代理出品してた関係で、ヤフオクの売り上げをpaypayに入れることができるので使いたかったのだ!!

がっしかし!! ZOZOMATでポイント贈呈だの初めて利用でポイント贈呈だのあって、1500円分ポイントがあった。これは使いたい!! しかしZOZOTOWNではpaypayが使えない!!! なんでよ(´;ω;`)ウゥゥ

思わずpaypayからLINEpayに入金できないかと思ったができんよな、普通に。はい。ライバルでした。
f:id:elve:20200311220300p:plain

意を決してクレジット払いでもう一足!! と決心してボタンを押してみたら・・・。
f:id:elve:20200311220435p:plain

な、萎えるぅ!!

f:id:elve:20200311220535p:plain
残り1点・・・

バンバンバンバンバンバンバン
バン     バンバンバン
バン (∩`・ω・) バンバン
 _/_ミつ/ ̄ ̄ ̄/
   \/___/ ̄ ̄

4回目で無事購入できました(`・ω・´)シャキーン

ちなみにこれも80%くらいあってるらしい
f:id:elve:20200311230501p:plain

・・・なんだろ・・・これで足に合わなかったら悲しみが止まらないなwwww という疲労感。
靴が届いたら続報書きます。

ZOZOMATを使ってみる

去年の6月に予約して秋ごろに来る予定だったZOZOMATが先週届いていたが放置していた。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【ZOZOMAT】予約受付完了のお知らせ
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

〓〓〓〓様

このたびは、ZOZOMATをご予約いただき誠にありがとうございます。
以下のとおり、ご予約を受付いたしました。

                                                • -

■受付内容

・受付日:2019/6/25 8:4
・受付番号:2XXXXX
・配送先情報:〓〓〓〓
・合計金額(税込):0円
・お届け予定日:2019年秋冬予定

                                                • -

随分と待たされたが・・・どう見ても四つ折りの紙である。
f:id:elve:20200311212625p:plain

「ZOZOMATは滑りやすい素材でできております」って・・・コーティング紙は滑りやすいね、確かに・・・。
f:id:elve:20200311212700p:plain

THE 紙
f:id:elve:20200311212835p:plain

待たされすぎてIDもパスワードもわからなくなってしまった。放置要因1
f:id:elve:20200311212850p:plain

ログインして測定に進む。自分とわかる情報を入れておく。
f:id:elve:20200311213017p:plain

利用規約に同意する、を読まずにタップ(良い子はちゃんと読みましょう)
f:id:elve:20200311213101p:plain

結構いろいろ注文がある。ペディキュア注意。
f:id:elve:20200311213315p:plain

言われるがままに撮る。結構体勢がつらくなるので気をつけよう。ポイントは離れたところから撮るようにすること、かな?
f:id:elve:20200311213353p:plain

f:id:elve:20200311213502p:plain

こんな感じ
f:id:elve:20200311213643p:plain

ネガティブなことを呟いてるのはいつだ!?

というわけで、私しか楽しくないシリーズですw
今回ネガティブワードを「死」「殺」「鬱」として、呟いてるに日時曜日を調べてみました。

f:id:elve:20200307173914p:plain

体感的には2,3月が調子悪いのですがこう見ると8~10月の殺伐指数がヤバ目ですねw
そういや今年は年明け早々失恋したせいか、2、3月は楽だな・・・油断できんが・・・。

2016年がヤバいwwwww 新しい環境で死にかけてたんすかね(;´Д`)
そして跳ね上がった2019年・・・おそらく対象はマルセイなんでしょうねえ・・・合掌。
f:id:elve:20200307174111p:plain

18時が圧倒・・・帰ってきて早々に死ね! とか呟いてるイメージでしょうか・・・。
f:id:elve:20200307174248p:plain

毎月17日の18時ころがヤバいみたいです・・・。17日何があったん・・・w
f:id:elve:20200307174830p:plain

プログラム

# -*- coding: utf-8 -*-
# 
import json
import re
import time
import calendar
#全ツイートファイルを読みこむ
with open(r"C:\twitter-2020-03-07/tweet.js", 'r', encoding="utf-8_sig") as f:
    data = f.read()
f.close
#jsonに変換
tw = json.loads(data[data.find('[') :])
#出力用csvファイル作成(上書き)
with open(r"C:\twitter-2020-03-07/殺伐.csv", 'w', encoding="utf-8_sig") as h:
    h.writelines("日付,曜日,時間,内容\n")

    #全ノードループ
    for t in tw:
        #フルテキストの中から体重部分を検索
        r = re.search(r'[殺死鬱]', t["tweet"]["full_text"])
        if r:
            #見つかったら
            time_utc = time.strptime(t["tweet"]["created_at"], '%a %b %d %H:%M:%S +0000 %Y')
            unix_time = calendar.timegm(time_utc)
            time_local = time.localtime(unix_time)
            h.writelines(time.strftime('%Y/%m/%d,%a,%X,', time_local) + t["tweet"]["full_text"].replace("\n", "/") + "\n")

h.close