いかたけの備忘録

忘れっぽい

VBAで自作関数の引数にセルの値を指定するときに良い感じにしたい。

この記事はSpreadsheets/Excel Advent Calendar 2018の10日目の記事です。https://adventar.org/calendars/3080

記事のほとんどがSpreadsheetsとライトノベル(?)なのでVBA派は少し肩身が狭いですが、やっていきましょう。ところで楽しく働けるならSpreadsheetsの中でも良いですね。 

さて、記事の内容に入ります。VBAで自作の関数を作る時があり、セルの値を引数に取ることがあると思いますが、このときの工夫について記載したいと思います。

Excelのセルから値を取るときに、取得対象とするセルの数や範囲が不定であるときがあります。この場合、取得するセルの数を別のセルに記載する、といった解決策も考えられますがあまりスマートではありませんね。

「sum関数みたいに、代入する範囲をガーッと指定して動かしたいぜ」という欲求をかなえる方法が、Range型の引数にする。というものです。コードとしては以下のようになります。

Function 連立一次方程式を解く(係数行列 As Range, 定数ベクトル As Range) As Variant

この関数は連立一次方程式をベクトル方程式Ax=bを解く関数になります。係数行列がAで、定数ベクトルがbですね。行列やベクトルの値をExcelのセルに記載して、それらを引数にします。行列・ベクトルの大きさを変更しても、引数の選択範囲を変更するだけで良いので、使う側としては楽になります。

引数として関数内に渡されたRange型のオブジェクトからはこのように値を取り出したりして使っていきます。

For i = 0 To (length - 1)
   For j = 0 To (length - 1)
      a(i * length + j) = CDbl(Cells(係数行列.Row + i, 係数行列.Column + j).Value)
   Next j
Next i
For i = 0 To (length - 1)
   y(i) = CDbl(Cells(値行列.Row + i, 値行列.Column).Value)
Next i

なお、上記で記載したの関数の中身は以下に置いていますので、よろしければご覧ください。

github.com

以上、自作関数の引数にセルの値を指定するときに良い感じにする手法について、記載いたしました。

明日は まだ担当の方がいらっしゃいませんので、ライトノベルの第4話が公開されるかもしれません。お楽しみに。

ウェッパに行ったときの話

ひとでさんと関根さんの結婚式に呼んでいただいた。

blog.sushi.money

式は大変めでたく、かつ面白く最高であった。感想等はみなさんが書いているので、どうでも良いことを書きます。

ホテルをとる

翌日、京都競馬場秋華賞のアーモンドアイを見に行く予定があったので、神戸⇔京都を2往復するのは面倒。よってホテルを取ることにした。京都はホテル不足なのか、1万5千円ぐらいするホテルかカプセルホテルしか無かった。酒を飲んでふらふらになって帰ってくることが予想されるので、カプセルホテルは避けたい。

仕事ではよく東横INNに泊まっており、東横INNは部屋の構造や備品が全国レベルで統一されており最高なので東横INNに泊まりたい。京都市内に東横INNは4店舗あるものの、いっぱいであった。やむなく適当なホテルをbooking.comで予約し、東横INNの公式サイトに2日間ぐらい粘着したところ空室があり予約できたので安心。

準備

ご祝儀とか着替えを鞄に入れる。ちゃんとした靴を履くと靴擦れして困るのであらかじめこういうのをつけておく。

www.amazon.co.jp

靴擦れする靴を始めて履いたときが会社の後輩の結婚式に出るときで、乾杯の挨拶をお願いされており、席を立ってマイクまで少し歩くだけなのにとても厳かに歩いている感じになった。

ホテルに荷物を預ける

東横INNはチェックインする前に荷物を預けることができる。これを使うことで身軽な状態で式場に入ることができる。

チェックインする

東横INNは基本的に最高ですが、コンセントの穴が足りない事がある。あらかじめ3口ぐらいの延長コードを持っておくと便利。

寝る

結局4時半ぐらいまで飲んでおり、半分寝ながら中華料理屋で草を食べていた。疲れたので寝る。9時ぐらいに起きれて良かった。

宅急便を送る

東横INNの一部店舗では宅急便を送ることができる。段ボールはホテルの置いてあることもある。(あらかじめ聞いておくと安心)これで礼服と引き出物を自宅に発送して、身軽に競馬場に行くことができた。(特に帰りの電車が混むので大きな荷物が明らかに邪魔になる。)

競馬

当日は3連復が2回当たって5000円ぐらいプラスになりました。

上半期に読んだ本

皆様いかがお過ごしでしょうか。当方めっきり厳しくなっていくと思われます。

今週のお題「2018年上半期」

昨年下半期はこちら。

ikatake.hateblo.jp 

いち病理医の「リアル」

いち病理医の「リアル」

 

病理医のオッさんが普段考えていることとかが書かれている。エッセイなので通勤時間中にも読みやすい。ちなみにヤンデル先生はライフゲームbotのファンの一人です。

 

生まれてこない方が良かった―存在してしまうことの害悪

生まれてこない方が良かった―存在してしまうことの害悪

 

本のタイトル通り、生まれてこない方が良かったねという反出生主義の人が書いた本。大体の人は生きてる上で苦痛の方が多いし、苦痛を再生産するのは良くないよねという感じで進んでいく。著者はこの本に書いている内容が、普通の人には受け入れづらいものであると判っているみたいで、説明が執拗に丁寧。あと、「ここまで説明した内容に対して、以下のような反論があると思いますので、あらかじめ答えておきます。」といった下りから、数ページをかけて想定される反論に対しての回答が記載されており、読むと疲れる。 

沈黙 (新潮文庫)

沈黙 (新潮文庫)

 

バテレン追放令が出た後の日本にコッソリ入ってきた宣教師の人の話。 宣教師の人の精神の描写が激しい。大体夏頃の話で、隠れて過ごしているときは、ずっと陰鬱に雨が降っていたり、カンカン照りの中を歩いているときには少し解放された気分になったりしている。井上筑前守の懐柔のやり方がいやらしい日本人っぽくて好きです。ところで忍殺の「ブッダよ寝ておられるのですか」はこの作品のオマージュなのでしょうか。

石田三成(秀吉)VS本多正信(家康) (文芸社文庫 し 4-1)

石田三成(秀吉)VS本多正信(家康) (文芸社文庫 し 4-1)

 

老化しているので、最近大河ドラマを見るようになった。本多正信っていう徳川家康の家臣が好きですが、あまり本とかに出てないので、珍しかったので買いました。参謀の立場で苦労する人たちが描かれていて良い。ただ、他の作品の台詞がそのまま使われているので少し興ざめ。  

城の科学 個性豊かな天守の「超」技術 (ブルーバックス)

城の科学 個性豊かな天守の「超」技術 (ブルーバックス)

 

老化して大河ドラマを見ているので、城とかが気になる。大学時代に姫路城に行かなかったのが悔やまれる。 こういう本を読みながら城を見物したい。

東大生が身につけている教養としての世界史

東大生が身につけている教養としての世界史

 

 ハンバーグとユッケは近いといった話が良い。 

ルワンダ中央銀行総裁日記 (中公新書)

ルワンダ中央銀行総裁日記 (中公新書)

 

 1965年から5年間の話。赴任してすぐにトラブルが発生しており、しかも現地スタッフはよく働いてくれなくて困る。様々な利害関係者は好き勝手なことを言っており困る。といった状況から話が始まっていく。大統領から信頼を得ていたのが救い。当面のトラブル対応をしつつ、貿易の仕組み、農家に課す税金、スタッフの給与体系、などの制度を改定していって交通網や倉庫を整備するなど働きまくっている。

「勝者が一方的に敗者を裁くのは良くない」と言ったことが書かれており、著者の経歴を見るとラバウル終戦を迎えて現地の軍事裁判に従事していたとのことなので、その辺がルーツなのかと思った。

 

以下は漫画です。 

百合百景 (MFC)

百合百景 (MFC)

 

 養分を吸った。こちらからは以上です。 

少女終末旅行 5 (BUNCH COMICS)

少女終末旅行 5 (BUNCH COMICS)

 
少女終末旅行 6 (BUNCH COMICS)

少女終末旅行 6 (BUNCH COMICS)

 

 終わってしまった。

だがしかし 6 (少年サンデーコミックス)

だがしかし 6 (少年サンデーコミックス)

 
だがしかし 7 (少年サンデーコミックス)

だがしかし 7 (少年サンデーコミックス)

 
だがしかし 8 (少年サンデーコミックス)

だがしかし 8 (少年サンデーコミックス)

 
だがしかし(9): 少年サンデーコミックス

だがしかし(9): 少年サンデーコミックス

 
だがしかし 10 (10) (少年サンデーコミックス)

だがしかし 10 (10) (少年サンデーコミックス)

 

 しばらく読むのを忘れていた。

フラジャイル(10) (アフタヌーンKC)

フラジャイル(10) (アフタヌーンKC)

 

岸先生に友達ができたよ! 

フラジャイル(11) (アフタヌーンKC)

フラジャイル(11) (アフタヌーンKC)

 

前半は探偵漫画、後半は野球漫画です。

 

ボウリングとボーリングを間違えないようにする。

  • ボウリングは玉を転がしてピンを倒す競技
  • ボーリングは穴を掘る作業

間違えやすい。

  • ボウリングは玉を「放る(ほうる)」
  • ボーリングは穴を「掘る(ほる)」

つまり

  • 「放る(ほうる)」→の音がある→「ボリング」
  • 「掘る(ほる)」→の音がない→「ボリング」

と覚えれば良さそう。

他に良い案があったら教えてください。

vbaで多項式近似曲線を求めるやつ

作った。既に10000人ぐらいの人が作っていそう。

github.com

Excelだったらグラフを作って近似曲線の挿入して、「グラフに数式を表示する」で判るのでは、という人もいらっしゃるかと思いますが、各項の係数を取り出すのが異常に面倒なので、自作関数を作った次第です。解き方は下記の図書を参考にしました。

数値解析入門

数値解析入門

 

 こういったことをしていてゴールデンウィークが終わっていく。

今週のお題ゴールデンウィーク2018」