エクセル

翌月の日付を簡単に表示させるには

こんなシートを作ってる人たくさんいると思いますが、毎回手打ちですか? 月に1回入れればいいから我慢しますか? 嫌ですよね。 2021年1月 2月 3月 4月 5月 6月 7月 8月 9月 EDATE関数で簡単に月+1 セルA1に2021/1/1が入っているとしたら、セルA2に=EDATE(A1…

セル書式の"aaa"は使用上の注意をよくお読みください

問題1:時系列データから土日を除外して平均を出したい まず、このスプレッドシートの平均Aと平均Bを見て欲しい。同じ数字が表示されている。しかし、平均Aは土日を除外したセルが対象で、平均Bはすべてのセルが対象となっている。 フォーミュラは以下のと…

コメントのディフォルト フォントサイズを大きくしたい

エクセルのコメントを追加するたびにイライラしますよね? というのもフォントサイズが小さくて読みにくいからです。オプション画面には設定できる項目がありません。なんと、エクセルはWindowsの個人設定フォント情報を使っています。そして、2021/6/10 現…

表示されているセルだけで平均が計算できる?

AVERAGE関数は非表示のセルも計算対象なのは知ってますよね。SUM関数も同じく非表示セルも計算対象です。だから、SUBTOTAL使えばいいんでしょ? そんなの100年前から知ってたよ。だから? っていう人。はい、残念でした。 SUBTOTALはオートフィルターにしか…

曜日を表示する

書式設定で"YYYY/MM/DD (aaa)"にすると曜日も表示できるという記事があった。へぇ、それは知らなかったな。昔のエクセル4の時代はユーザー設定書式にたくさんサンプルがあったが、今のバージョンには "aaa"なんてサンプルがないから知らない人はたくさんい…

選択範囲のセルを画像として保存する

やりたいのはエクセルのセルを画像として保存して、添付ファイルとしてメール送信です。mailItem.bodyには文字列しかセットできないのですが、セルの背景色情報がどうしても知りたいんです。特殊な条件で背景色を変更するようにセットしているからです。考え…

Timerクラス

最近の働き方改革で夜遅くまでオフィスで仕事をしない人は関係ない話なので、この記事は読まなくても大丈夫です。 経過時間をざっくり計算するために一番簡単な方法はVBAのTimer関数です。たいていの人がこんな感じで済ませていると思いますが、これだと対応…

Boolean表記とIIF関数

IF-ELSE文で次のようなコードを書くときに5行も使うの嫌ですよね。 Dim fFlag As Boolean If buff = "EP9 sucks" Then fFlag = True Else fFlag = False End If IIF関数なら1行で書けます。 fFlag = IIf(buff = "EP9 sucks", True, False) でも、ステート…

メモ:条件付き書式ダイアログのバグ

条件付き書式ダイアログで書式ルールを6個以上でクリックできなくなる、適用先が消えてしまうバグが発生します。 1.6個の書式ルールが定義されたダイアログ 2.6個目を表示しようとしてスクロールすると・・・・ 一番下の適用先が表示されていません。 …

日本国民として知っておくべきこと:国民祝日

まずは技術的な話 Windows10のカレンダーアプリには、OutlookとGmailの国民祝日があります。普通に考えてOutlookのAPIで簡単に取れるだろうと思って、いろいろ調べてみたんですが、サンプル通りにやってもうまくいきません。 休日一覧をウェブから取ってくれ…

いまさらRangeオブジェクト: Value、Text、メンバー指定なし

RangeオブジェクトのディフォルトのプロパティはValueです。Textではありません。この2つのプロパティの違いはちゃんと理解しておいた方がよいです。 Dim xCell As Excel.Range Set xCell = Sheet1.Range("A1") xCell = Now xCell.NumberFormatLocal = "[$-…

自宅PCのエクセルを外出先のスマホで見たい

1.ペイントにシート内容を張り付けてjpgファイルでGoogleドライブに保存する。 ALT+Print Screenしてもいいですが、コピーしたいセル範囲をエクセルでコピーしてペイントに張り付けると、画面イメージでペイストできます。ペイントでクリッピングする手間…

セキュリティに影響を及ぼす可能性のある問題点が検知されました。

自分が開発しているVBAなのにこんな警告が出たことがありませんか? 警告が出たことがないXLMSファイルにも関わらず、そのファイルのコピーを作って、開いたときに警告が出たことはありませんか? 『マクロを有効にする』を毎回クリックするくらいどうという…

エクセルを2重起動させたい

1時間に1回タイマーでワークブック①のVBAマクロを実行させるようにしておいて、別のワークブック②でVBAの開発をしたいというケースでは、②のVBAをデバッグしている間は①のVBAは動作することができません。つまり、ひとつのエクセルのプロセスでは、VBAはシン…

条件付き書式で表示が変わったセルの背景色をVBAでチェックするには

条件付き書式で背景色が変更されている行に対して、任意の背景色を持つセルの列だけを表示したかったので次のようなコードを書いてみたんですが、.Interior.Colorの値が16777215(=vbWhite )になってしまい、今更こんなことでつまづくのかと苦笑してしまいま…

株価スクレイピング

VBAで株価スクレイピングしようかと思ったんですが、検索すると圧倒的にPythonがヒットするので、どれだけ高速なのか調査も兼ねてPythonの開発環境を整備して、ある程度動作できるところまでやってみました。 ただ、もう面倒くさい。インタープリターベース…

SpecialCellsで落とし穴にハマってみた

シートの一番下のセルを一発で教えてくれるSpecialCells(xlCellTypeLastCell)は便利なのでたまに使いますが、例えば次のようなシートで実行すると14を返します。当然ですよね。 ? Sheet1.Range("A1").SpecialCells(xlCellTypeLastCell).Row では、同じシート…

いまさらテキストファイルの読み書き

テキストファイルにデータを書き出したい、または読み込みたい。ああ、なんだっけLine Inputだっけなんだっけ? FreeFileいるよな。調べるの面倒くせー というわけで仕方なくクラスを書くことにしました。コピペで済ませたい人は、このクラスをコピーしてく…

メモ: このブックには安全ではない可能性のある外部ソースへのリンク...

エクセルでファイルを開いた時に「このブックには、安全ではない可能性のある外部ソースへのリンクが1つ以上含まれています」という警告が出ることがあります。 RSS(リアルタイムスプレッドシート)や他のファイルへの参照リンクなどいろいろな原因があると…

エクセルからメール送信

エクセルからメール送信するにはどうしたらよいでしょうか。Outlookライブラリを使えば、簡単にできます。サンプルでは、ワークシートの内容を送っていますが、ワードドキュメントを添付したり、応用範囲はいろいろ考えられると思います。 参照設定: Micros…

Webクエリのダウンロード時間がかかるようになった

Webクエリを使い続けていると、3秒程度だったダウンロード時間が1分以上になることがあります。あちこちのサイトを検索してもはっきりした原因はどこにも書いてありませんが、やっと原因を特定できたので情報公開することにします。おそらくこれがファイナル…

VBAの高速化

画面の更新をオフにする .Selectionはダメ絶対 セル自動計算オフは禁止 イベントをオフにする ステータスバーの更新頻度を下げる ループの中でのDoEvents Webクエリが遅くなる問題 Webクエリはテーブル指定で それは言われなくても知ってます編 画面の更新を…

クリップボードとのインターフェース

エクセルの中で .Copyで内部的なクリップボードに入れて、.PasteSpecialするのは簡単です。では、エクセルではなく別アプリで使えるようにクリップボードに入れるにはどうしたらいいでしょうか。セルの内容を.Copyすれば別アプリでもアクセスできるので問題…

Collection vs Dictionary

Collectionオブジェクトは安直にデータをぶっこんで、あとでグルグル回すのに便利です。たぶん、みなさんも使ったことがあると思います。 コレクションにはオブジェクトを格納することもできるので次のようにRangeオブジェクトを入れることができます。For E…

エクセルの昔のメニューを復活させるには

下線時代はよかったWindows 3.1の頃の話ですが、メニューやダイアログボックスのすべてのコントロールには下線付きのアルファベットが付いていました。私達はそれを見て、マイクロソフトのシステムはすべての操作をキーボードでできるようにGUIを設計してい…

セルからマクロ関数を呼び出す

オートフィルターを使って、表示されているデータに対して合計、平均、個数、最大、最小といった集計を行いたい場合は、SUBTOTAL関数の独擅場です。え? SUMじゃダメなの?という人に簡単に説明すると、SUMは非表示のデータも合計しますが、SUBTOTALは非表示…

HTMLファイルをダウンロード

HTMLファイルをダウンロードして何をしたいのかは人それぞれですが、私がやっているのは株価をダウンロードしてMySQLに落とし込むとか、適宜開示情報や格付け情報の監視などでしょうか。 HTMLファイルをダウンロードするには大きく2つの方法があります。1…

For Each xCell In Selectionの落とし穴

エクセルでマクロの書き方が分からない場合は、マクロ記録でコードを生成させて参考にするのが一番簡単です。ところが、そのコードはそのままでは使えない代物だということが分かってますか? 今回は、Selectionの落とし穴について書いてみたいと思います。 …