2019-08-01から1ヶ月間の記事一覧

二次元配列で任意の一行を「削除」「空白化」「空白挿入」

昨日は、二次元配列で任意の一行を削除するために、クラスモジュールを二段階で作成してみた。 infoment.hatenablog.comでも、前々回に引き続き、やっぱり何だかスッキリしない。そこで今日は、更なる改良に挑戦する。 前回は、このようなコードになった。 a…

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

昨日は、二次元配列で任意の一行を削除して、上に詰めることに挑戦した。 infoment.hatenablog.comしかし、どうもスッキリしない。そこで今日は、昨日の続きに挑戦する。 もともと、シートに対してならば、このような表記ができる。 Range("A4").EntireRow.D…

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

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

色でソート

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

クリップボードの不思議(未解決)

例えばこんな風に、一行おきに選択する。 この状態でコピーして貼り付けると、非選択行の分が詰まって貼り付く。 この時、貼り付け直前のクリップボードは、どんな状態だろう? ひょっとして、これを利用すれば、選択行だけを纏めて配列に格納! 何てことも…

特定の文字を含む行をまとめてコピーする

毎度おなじみ、なんちゃって個人情報。 ありがとうございます。いつもお世話になっています。今日はこの表の中から、「カレーの食べ方が混ぜ混ぜ派の人」だけを抜き出して、別シートにコピーすることに挑戦する。 フィルターを使えば、簡単に抽出できる。 こ…

変数宣言に関する勘違い(大失敗談)

変数は、同一プロシージャ内で複数回宣言するとエラーになる。しかしこのようにループ(繰り返し処理)の中で宣言すると、エラーにならない。 Sub Test() Dim i As Long For i = 1 To 10 Dim j As Long Next End Sub また、変数は宣言直後は、変数の型毎に定…

For Each で1行ずつ処理する ~テーブルの場合~

昨日は、For Each で1行ずつ処理する場合について紹介した。 infoment.hatenablog.com今日は、テーブルの場合についてのご紹介。 本日も、こちらの表で試してみよう。 昨日は、指定範囲のなかの「Rows」(つまり、「行が集まったもの」)について、一行ずつ…

For Each で1行ずつ処理する

先日は、テーブルで特定の列を処理する方法を幾つか紹介した。 infoment.hatenablog.com今日は、For Each で1行ずつ処理する場合についてのご紹介。 例えば、こんな表でのお話。 A列がリンゴの行だけ、赤で塗り潰したいとする。昔は、こんな風に書いていた…

テーブルで特定の列を処理する

昨日は、指定範囲をFor Each ~ Next のループで処理する際、その順序を列方向にする方法を紹介した。 infoment.hatenablog.comところがテーブルを使用すると、昨日の内容と少し様子が変わってくる。 今のところ私が把握しているのは、次の5通り(大別する…

For Each で処理する順番

範囲を指定し、その中のセルを対象として順に処理をする。 例えば、こんな感じで。 Sub test_1() Dim r As Range For Each r In Range("A1:H8") r.Interior.Color = 192 Application.Wait [Now()+"00:00:00.03"] Next End Sub 確認したところ、このように、…

有効 ⇔ 無効の切り替えが面倒くさくなった話(邪道?)

Excel VBAにおいて、処理の高速化といえばこれ。 Application.ScreenUpdating = False 画面の更新を一時停止することで、処理の高速化が望める。また、シートのチェンジイベントに於いて、忘れてならないのがこれ。 Application.EnableEvents = False 例えば…

カウントアップ後の番号を自動取得

先日、こちらの記事を拝読した。 koroko.hatenablog.comこれは懐かしい。なぜなら、私も以前に似たような状況で、似たようなツールを作成して使用していたから。 今では異動して使わなくなったそれを、思い出しながら再作成してみた。 もはや詳細は、忘却の…

レポートのレイアウトを表形式で表示(ピボットテーブル)

昨日は、指定した内容で配列がサクッと作成される関数を作ってみた。 infoment.hatenablog.com話の流れは、「1から100の偶数の和を求めるワンライナーに対応するため作った」であるが、切っ掛けは別の事案だった。 今回は説明のため、いつもの「なんちゃ…

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

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

内包判定

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

「オイラーの等式」をExcel で確認してみる

美しい数式といえば、よく聞くのは「オイラーの等式」だ。 式自体の美しさに加え、その導出過程もまた、美しさに満ちていると思う。 wiis.infoそして、ふと思った。Excel でこれを確認することは可能なのか?と。銅銭台座 弥勒仏笑い仏像 布袋様の置物 馬蹄…

選び直すべきか否か(モンティ・ホール問題)

先日偶然に、モンティ・ホール問題の存在を知った。 今更ですか?すみません、今まで知りませんでした。ja.wikipedia.org 「プレーヤーの前に閉まった3つのドアがあって、1つのドアの後ろには景品の新車が、2つのドアの後ろには、はずれを意味するヤギがいる…

ある文字の時にイベント発生(失敗談)

昨日のこと。メールで、こんな依頼が舞い込んできた。 A1の値がA(りんご)になったとき、イベントを発生させたい。 了解、やりましょう。 確認したところ、A1にはリストが設定されていた。 ここで「A(りんご)」を選んだ時に、何某かの処理を行いた…

阿弥陀編:最終回 ~クラスモジュールへの旅~

先日は、あみだくじを一斉にスタートさせることで、結果が出るまでの待ち時間を短縮してみた。 infoment.hatenablog.com本日は、阿弥陀編の最終回(と、「火の鳥」っぽい題名を付けてみた)。 といっても、行ったのは以下の二つ。 クラスモジュール化(ワン…

一斉にあみだくじ

前回は作成したあみだくじで、選択した任意の参加者を自動でゴールまで辿らせてみた。 infoment.hatenablog.com今回は、あみだくじの作成から結果の表示までを、自動で一気にやってみる。 あみだくじで、一人ずつゴールまで辿ると、全ての結果が出るには 一…

あみだくじでスタートからゴールまで辿らせてみる

昨日は、あみだくじの線を自動で作成することに挑戦した。 infoment.hatenablog.com今日は、これを自動で辿らせてみる。 正しい道を辿るために、今回は、スタート位置を2行2列に拡大してみた。 この拡大領域について、次のように判別する。 ①に底線がある …

あみだくじの「梯子の部分」を、マクロで作ってみる

さて、昨日までは、罫線描画のあれこれを話題にしてみた。 infoment.hatenablog.com infoment.hatenablog.com今日はこれらを踏まえ、また上記投稿の期間中に寄せられた知見を拝借して、あみだくじの「梯子の部分」を作ってみる。 ※元ネタはこちらです。 koro…