ユーザー定義関数

フィルをマクロで操作し、その戻り値をRangeとする関数(データ予測への対応)

昨日は、フィルをマクロで操作し、その戻り値をRangeとする関数を作成してみた。 infoment.hatenablog.comしかしこの関数、現時点でまだ幾つか問題を抱えており未完成。そこで、この解決に取り組んでみる。 まずおさらいとして、前回の関数を再掲する。 Func…

フィルをマクロで操作し、その戻り値をRangeとする関数

先日は、フィルをマクロで操作してみた。 infoment.hatenablog.comでも、これだけだと面白くない。そこで、作成した連続データ範囲を戻り値とする関数にしてみた。 このために必要な情報は、 初期値+増分値のn倍が、停止値となっていない場合 の振る舞いに…

配列にCOUNTIFを使ってみる

なぜか、ずっと思い込んでいた。WorkSheetFunction.Sumで足し算できるのは、一次元配列だけだと。しかし実際に、そんなことはない。 Sub Test() Dim arr As Variant arr = Selection MsgBox WorksheetFunction.Sum(arr) End Sub 二次元配列であっても、この…

「~」や「, 」で連結された数字を元の数字に戻す

先日は、連続する数字を「~」で、不連続な数字は「, 」で連結する ユーザー定義関数の作成に挑戦した。 infoment.hatenablog.comすると、この逆を行う処理についてのコメントが寄せられた。 そこで今回は、これについて挑戦してみた。 今回の解説については…

連続する数字は「~」で、不連続な数字は「,」で連結するユーザー定義関数(回答編)

昨日は、連続する数字の結合について、設問編と称し、結果の動画だけを掲載した。 infoment.hatenablog.com今日は、回答編を紹介する。 本来ならば、「解答」とすべきところ。しかし恐らく解答は無限にあると思われ、今回は「回答」とした。 ※解説については…

連続する数字は「~」で、不連続な数字は「,」で連結するユーザー定義関数(設問編)

マクロで以下のようなことが出来ないか、職場で問い合わせを受けた。 ・連続する数字は「~」で繋ぎたい。 ・不連続な数字は「,」で繋ぎたい。 ・共通部分の表示は省略したい。具体的には、こんな感じだ。 1,2,3,4 ⇒ 1~4 101,103,104…

ファイル名変更

業務で、連続して複数のファイルに対し、ある特定のルールで名称変更 することになった。今から作って、明日早速試してみよう。 名前を変更するには、Nameステートメントが便利だ。 docs.microsoft.com ' 構文 Name A As B A:変更前のファイルパス B:変…

二次元配列の一部を抽出:指定列番号順にスライス

最近、これの存在を知った。 docs.microsoft.com何ということでしょう。これがあれば、簡単に配列をスライスできる。 今までの苦労は何だったのか。 本日も、毎度おなじみ「なんちゃって個人情報」のお世話になる。 例えば、一旦表全体を配列に格納したのち…

辞書のキーとアイテムで二次元配列作成

辞書(連想配列)のキーとアイテムで、二次元配列を作りたくなる場面に遭遇。そういえば、テーブル内の指定した二列で辞書を作る関数を作成したことはあったが、その逆は無かったな。 infoment.hatenablog.comというわけでな、今回はこれに挑戦してみた。 と…

①と②の順序が入れ替わった時、自動で②を①に、①を②に変更したい。

突然、強烈に面倒くさくなった。 何が面倒くさいって、番号を一々入れ替えるのが。 私の書く週報は、良し悪しはさておき、こんな書式になっている。 例えば時系列の関係などから、①と②を入れ替えたとする。 ②と①の文字が自動で入れ替わるはずもなく、次いで…

セル内で複数行に改行されている文字を、一行ずつ取得したい

セル内で、複数回改行されている文字列がある。 見やすさのためか、途中に空白行まで挟まっている。こんな感じで。 この中から、 ああああ いいいい うううう ええええ の4つの文字列を取り出したいという依頼があった。 拡張子は「.xls」だった。聞けば、…

互換モードのExcel(拡張子.xls)を、まとめて「拡張子 .xlsx」に変換

先日は、互換モードのファイルパスを受け取り、以下の拡張子で保存し直すマクロに挑戦した。 「.xlsb」(バイナリー ※指定時のみ) 「.xlsx」(マクロを含まない場合 ※自動判別) 「.xlsm」(マクロを含む場合 ※自動判別) infoment.hatenablog.com今日は、…

.xls を .xlsb や .xlsm で保存

昨日は、拡張子が「.xls」のファイルが大量にあったため、これを「.xlsx」に自動更新するマクロに挑戦した。 infoment.hatenablog.comすると、日頃親交のある狸さんから、拡張子「.xlsb」についてご紹介を受けた。 (いつも有難うございます)。そこで本日は…

.xls を .xlsx で保存

あるシステムからダウンロードしたExcelファイルが、拡張子「.xls」だった。一月に一ファイルで、3年分ある。なぜか開くのに時間が掛かるし、容量も大きい。そこで、一つずつ開いては「.xlsx」で保存する地味な作業に突入して、二つ目で嫌になった。そうだ…

二次元配列で任意の一行を削除

例えば、4行目を削除したい場合、この一行で事足りる。 Rows(4).Delete しかし二次元配列の場合、任意の一行を削除して上に詰めることは出来ない。 本当は出来るのかもしれないが、私はその方法を知らない。そこで、既に世の中にあるのかもしれないが、その…

色でソート

先日、こんな相談を受けた。 グループ別にセルの色が塗り分けられたリストがある。 色別に並び替えることで、各グループを取り出したい。 何か良い方法は無いか? 検討してみた。 例えばこんな風に、グループごとに色分けされていたとする。 Excel2007以降は…

ある程度の内容で配列を作る関数

「1から100の偶数の和を求めるワンライナー」が話題になっている。 qiita.com一行のコードで求めるには?の命題に対し、様々な言語で解法が寄せられていて興味深い。私の場合はスマートな方法が思いつけず、愚直に「:」でつなぐぐらいが限界だ。 そこで…

内包判定

あるセルが、ある範囲に含まれているかどうか知りたい。そんな場面に遭遇した。 よく見かけるのが、Intersectメソッドの応用。 officetanaka.netしかし今回は、複数のセルが、別の指定範囲に完全に内包されているかを知りたかった。例えば、↓のようなケース…

青 + 黄 = 緑色?(失敗談)

セルやフォントに着色する際、手っ取り早く「色定数(ColorConstants)」で指定する方法がある。 例えばセルを赤で塗りつぶしたい場合、本来なら Selection.Interior.Color = 255 となるところ、Excelが準備してくれている定数を用いることで、このような記…

セルの中に良い感じで線矢印を描画したい

セルの中に良い感じで、線矢印を描画したい状況に遭遇した。 たまに、↓ こんな線矢印を見かけることがある。 始点と終点が揃っていない。 みんな、微妙に傾いている。 これはぜひとも避けたい。ということで、かつて作成したマクロもあったのだが、敢えて「…

「フリガナ」の欄に入力 の続き2(失敗談)

先日は、様々な書式でよく見かける「フリガナ」欄の入力方法を考えてみた。 infoment.hatenablog.com今日は、これの続きを少しだけご紹介。 VBAでフリガナを取得する場合、方法は次の二つ。 WorkSheet関数を、VBAで使用。 ApplicationオブジェクトのGetPhone…

「フリガナ」の欄に入力 の続き

昨日は、名前の読みが当て字の場合の、「フリガナ」欄の入力方法について検討してみした。 infoment.hatenablog.com今日は、昨日の続き。 まず起動方法だが、出来るだけ簡単な方が良い。そこで、シートの右クリックイベントに設定してみた。ついでに、「名前…

「フリガナ」の欄に、どのように入力してもらうか。

Excelで作られた帳票で頻繁に見かけるのが、このような書式。 この「ヤマダタロウ」の部分について、どのような入力方法が良いか考えてみた。 1.両方とも直接入力 最もよく見かけるパターン。でも、これだと面白くない。 2.フリガナの欄にPhonetic関数を…

「強敵」と書いて「とも」と読む

先日職場での雑談から、こんな話題が登場した。 「検索って、平仮名でもできますよね」ナンデスカ、ソレハ?初耳だった。 果たして試してみると、確かにそのとおりだった。 例えば、「後日談」と入力して、「じつだん」で検索するとヒットする。 不思議だな…

漢数字で書かれた日付を、日付データとして認識してみる

昨日は、漢数字を数値として認識してみた。 infoment.hatenablog.com今日はこの機能を利用して、漢数字で書かれた日付を、日付データとして認識することに挑戦する。 今回は日付の表記ということで、条件をかなり限定した。 「年」は西暦とする。 「年」に含…

漢数字(日付)を数値として認識してみる

一昨日、8桁の数値を日付データへ変換してみた。 infoment.hatenablog.com色々やるうちに、漢字の日付も変換したくなった。 そこで今日は、日付の関数時を数値として認識することに挑戦する。 万・億・兆と大きな桁になると話は別だが、日付に登場する一~…

配列に日付を格納してオーバーフローしたお話 の続き

昨日は、2019年6月10日の日付を取得するつもりが、55197年後の日付を求めようとして破綻する結果となった。 infoment.hatenablog.com最終的には、主たる原因である「セルの書式設定」を一旦標準に戻すことで、解決することが出来た。ところでその後、コロ子…

配列に日付を格納して、オーバーフローしたお話(失敗談)

先日、このような表を受け取った。 A列には、何が入っているのだろう?一つ選択してみると、8桁の数字が入ってい た。セルの幅が狭すぎて、このような表示になったようだ。 ※書類のレイアウト上、この列のために広い幅を確保できないとのこと。 システムか…

プルダウンリストを作成する ④ 表示する順序を指定 の続き

先日は、プルダウンリストを作成する際に、リストの表示順序を明示する方法を考えてみた。 infoment.hatenablog.comこの中で、二次元配列のソートを突貫工事で作成したところ、なかなかの欠陥物件になってしまった。 ※数字を文字に置き換える過程で、正しく…

数字の桁数を求める関数

前回のネタを作成中に、数字の桁数を求めたい場面があった。しかし、桁数を直接求める関数は無いようだ。そこで、手っ取り早く作ることにした。 先ず大前提として、ここでは有効数字の桁数は扱わないことにする。色々と複雑だから。 有効数字 - Wikipediaそ…