Python3 でリストをcsv として保存したものをExcel で開くと文字化けする件。read_csv でencoding を指定したのと同じものをto_csv のオプションに指定したら解決しました。
・ ・ csv_name = "\price_data.csv" data.to_csv(OUT_DIR + csv_name, encoding = 'sjis', index = False)
to_csv のencoding のデフォルトは ‘utf-8’ なので指定必須でした。
Python3 でリストをcsv として保存したものをExcel で開くと文字化けする件。read_csv でencoding を指定したのと同じものをto_csv のオプションに指定したら解決しました。
・ ・ csv_name = "\price_data.csv" data.to_csv(OUT_DIR + csv_name, encoding = 'sjis', index = False)
to_csv のencoding のデフォルトは ‘utf-8’ なので指定必須でした。
遅ればせながら、Office がバージョンアップして2019 になりPC2台までインストールできるオンラインコード版が買えるようにになったのでAmazon.co.jp でポチりました。
Microsoft Office Personal 2019 (最新 永続版)|オンラインコード版|Windows10|PC2台
インストールは簡単。Amazon.co.jp のサイトにログイン、ゲーム&PCソフトダウンロードライブラリのリンクから
[Office.comへ] のリンクをクリックしてインストレーションに従うだけです。
[次へ] をクリック。
[インストールする] をクリック。
Excel 2019 を起動。
特典の色々付いているOffice365 をなぜ買わないのかとお叱りを受けそうな所ですが、サブスクリプションは使わないと初期投資の元を取れないのがもったいないと思ったので・・・。機能は2016とあまり変わらないというか、変わらないところが扱いやすくて良いですね。
MS オフィス互換のLibreOffice calc ですが、MS Excel で書いた時刻表示のプロシージャを読み込むか、試みに実行してみました。
まず、セル”A1″=GETDATE() とユーザー定義関数を入力します。
[ツール]-[マクロ]-[マクロの管理]-[LibreOffice Basic…]から当該ブックの[standard]をクリックして[新規作成] で以下のプロシージャをコピペします。
Option VBASupport 1
Function GetDate() As Date
Application.Calculation = xlCalculationAutomatic
Application.Volatile
GetDate = Now()
End Function
Sub clock()
Dim counter As Long, crntAdd As String
Worksheets("sheet1").Activate
Worksheets("sheet1").Range("A1").Select
crntAdd = ActiveCell.address
Do Until crntAdd <> "$A$1"
If counter Mod 1000 = 0 Then
counter = 0
Worksheets("sheet1").Range("A1").Calculate
crntAdd = ActiveCell.address
DoEvents
End If
counter = counter + 1
Loop
End Sub
Private Sub フォーム_click()
Call clock
End Sub
[表示]-[ツールバー]-[フォームコントロール]から[コントロールツールバー]をポイントして「ツールバー」から「デザインモード」にします。
[フォーム]の挿入ボタンをクリックするとコントロールフォームが表示されます。(ちなみにボタンの名前変更は、右クリック→コントロール→全般タブ→タイトルから変えられます。)
「プッシュボタン」と書かれた[フォーム]を右クリックして[コントロール]から[イベント]-[実行時] の[…]をクリックして「アクションの割り当て」から「マクロセレクター」で[フォーム_click]マクロを割り当てます。
「デザインモード」を終了して名前を付けてブックを保存。[プッシュボタン]フォームをクリックすると時計が動きました。
難点は、MS Excel のthisworkbook.Activate が使えないことや、Workbook_Open という名前のプロシージャを作ると動作せず「マクロセレクター」から登録することなど不自由を感じました。
参考URL:
http://calibreblo.blogspot.jp/2011/05/blog-post.html
あまり使わない機能なので何度、検索しても忘れてしまうので困っています。
エクセルで同じ書式の複数シートの当該セルの合計を出したいとき、総合計シートのセルでΣ(SUM関数)を出して最初のシートのセルを選択、Shiftキーを押しながら最後のシートのタブをクリック。
ですよね。勉強になります。
参考URL http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1412189669
今日はVBAのお勉強です。[ミュージック]フォルダのアーティスト、アルバム、曲名をワークシートにリスト出力します。曲名ファイルがカレントディレクトリの2段下にあるので、For Each文を3回ネストしています。
Public Sub get_music_list()
Dim Obj, f, g, h As Object
Dim DirName as String
Set Obj = CreateObject("Scripting.FileSystemObject")
Set DirName = Environ("UserProfile") & "\Music"
Dim i, j As Long
i = 1: j = 0
For Each f In Obj.GetFolder(DirName).SubFolders
For Each g In Obj.GetFolder(DirName & "\" & Obj.GetFolder(f).Name).SubFolders
ActiveSheet.Cells(1, i).Value = Obj.GetFolder(f).Name
ActiveSheet.Cells(2, i).Value = Obj.GetFolder(g).Name
For Each h In Obj.GetFolder(DirName & "\" & Obj.GetFolder(f).Name & "\" & Obj.GetFolder(g).Name).Files
ActiveSheet.Cells(3 + j, i) = h.Name
j = j + 1
Next h
i = i + 1
j = 0
Set h = Nothing
Next g
Set g = Nothing
Next f
i = 0
Set Obj = Nothing
Set f = Nothing
End Sub
http://www.moug.net/tech/exvba/0060001.html
http://vba-geek.jp/blog-entry-52.html
ちなみにPowerShellでは、同じ様なことを以下のコマンドで可能です。
>cd $HOME\Music >Get-ChildItem -Recurse -Name >C:\src\music.txt
http://www.atmarkit.co.jp/ait/articles/0808/22/news129.html
きっかけは、Kasperskyインターネットセキュリティがたびたび「自宅のWiFi[SSID]は安全ではありません。」みたいなアラートを表示していたのでWiFiのセキュリティについて考えていたことです。
検索してみると、ルーターの暗号方式をWEPからWPA2にする、SSIDをブロードキャストしない設定にする、パスワードを複雑なものにするなどといったありきたりのことでしたが、もしかしてデフォルトのSSIDがいけないのかとExcelでランダムなSSIDを作ろうと思いつきました。
さあ、数字6文字と英字6文字の12桁のSSIDをRAND関数で作ってみよう。
まず、[A1]から[A26]まで1~26の数字をCtrl+オートフィルで、[B1]から[B26]までA~Zまで手入力でテーブルを作ります。
次に、[D1]から[D12]まで1~12の数字を、[E1]に以下の数式を入力して[E6]までをオートフィルして、アルファベット6文字の乱数を作ります。
=VLOOKUP(RANDBETWEEN(1,26),$A$1:$B$26,2)
次に、[E7]に以下の数式を入力して[E12]までオートフィルして数字6文字の乱数を作ります。
=RANDBETWEEN(0,9)
これで12文字の乱数ができました。次に[G1]から[G12]まで=RAND()をオートフィルして、[H1]から[H12]までを以下の数式をオートフィルして重複しないランダムなインデックス(順序数)を作ります。
=RANK(G1,$G$1:$G$12)
最後にDE列のテーブルで作った乱数を、H列のインデックス順にI列でVLOOKUPして[I12]までオートフィルします。
I1=VLOOKUP(H1,$D$1:$E$12,2)
後は[F9]キーを何回か押して好きな英数列が出来るまで再計算すれば出来上がり。
ポイントは、以下URLにもありますがRAND関数で作った乱数にRANK関数で重複のない順序を与えてあげるところですね。
参考URL http://office-qa.com/Excel/ex205.htm