「関数」を含む日記 RSS

はてなキーワード: 関数とは

2024-03-16

https://anond.hatelabo.jp/20240316141531

  はい、だから、 u^n + v^n = 1 という美しいかたちをしている楕円関数、え? 楕円関数っていうのは、高校数学3Cに出て来る奴です、演習問題は大量にあります、楕円関数

   焦点とかが決まってる奴です、ただの楕円関数です、それの、u,v の値が、格子点っていうのは、両方とも整数である有理数であるようなデカルトの上の座標をそう言います

  フェルマーの言っている美しい主張というのは、上の関数が、その格子点を通らないというだけの、そういう状態のものであるということです。なんでそうなるのかの証明をしなければいけませんが

  そういうのはできないのでここではやりません。あのー、ワイルズちゃん証明したっていうのは、専門的な議論をしてるので、何が書いているのか分からないので、

https://anond.hatelabo.jp/20240316141531

  それをフェルマーの大定理というのですが、 楕円関数と、有理格子点に関する研究は、高等学校数学3Cでは習わないし、実践演習も何もないので、証明することはできないということです。

   p進簡約群や、p進ホッジ構造、などの難しいことを勉強しないといけないのですが、それは、数学科でないとやっていないので、一般の人は誰も理解できないということですね。

  えーと

   もともと、p進群の例としては、GLとか、がありますが、何でp進群なのかというと、初等的に、nがpだからですが、そういう状態のものがあって、なんで初等的にできないのか、伊東哲司さんとの

  共同研究で、いくつもありますはい

https://anond.hatelabo.jp/20240315200618

  違うのである

      u^n + v^n = 1 というかたちをした楕円関数高等学校数学3Cレベル)の、u,v は、両方とも有理数である点(有理格子点)を、絶対に通過しない。

2024-03-14

  それからまーひとついうならば数学検定1級をしたらどうかということですが、数学問題にも、面白いものとくだらないものがありますので、当然、面白いものをやりたいわけです

   だとすると何が面白いのかというと当然、凄くて魅力的な状態のもの研究したいわけです。 コラッツ数列は、 そういう奴でまだ届いていないものです。

  フェルマー予想も多分、魅力的な状態のものではないかと思うが・・・

   全ての楕円関数は1つも有理点を通らないものなので、そういう状態なのが、フェルマー予想だと思いますが。 u^3+v^3=1 は1つも有理点を通過しないような式であると思います

  どうでしょうか、何か有益見解をお願いします。そういう状態になっている式ということでしょうか?

2024-03-11

anond:20240311131716

エクセルの標準関数で完結する作業を、わざわざマクロで組みたがる奴は一定はいる。

中途半端技術ワナビーの奴は、同じ結果なら自分が知っている範囲内でより習得コストが高い手段を使いたがる傾向がある。

本当にハイレベル技術習得した奴は、結果さえ同じでメンテナンス性さえ確保できていれば手段等どうでもいいと思っている節がある。

SUM関数業務改善バカにする勘違いITオタクどもが日本進歩を妨げている

テレビ番組エクセル関数を使って業務効率化している女が紹介されたところ

勘違いイキリITオタク君どもがワラワラと群がってきて、エクセル関数如きで業務効率(笑)と散々バカにし始めた

しか日本IT化を妨げているのはこういう中途半端技術進歩史観洗脳されたバカどもなのである

はっきり言って連中が平伏して崇め奉っている先端IT技術ほとんど役に立たない

適用できる場面は少なく、導入コストは半端なく高い、その割にエクセル関数に比べて世の中の生産性向上にどの程度寄与するかと考えたらその差は微々たるもの

連中はエクセル関数をアホでも使える技術からという理由バカにするが、

IT世界最先端技術を苦労して導入するより、世の中の手計算をサクッとエクセルに置き換える方が世の中全体の生産性向上に影響がでかい

頭が未熟な技術屋は技術難易度が高ければ高いほどその技術を盲信してありがたがる傾向にあるが、それは単なる専門バカオナニーである

今回のエクセル関数騒動日本IT屋は俺って頭良いぜアピールをしたいだけの、木を見て森を見れないタイプバカ死ぬほど大勢いることが明らかになった

この手のバカが本職にも山ほどいることがIT後進国日本レベル証明している

anond:20240311125742

マクロ禁止関数禁止複数シート禁止→他セル参照禁止って流れ。

新しいもの導入してもすぐに禁止されるのは目に見えてるんだよなぁ。

SUM関数業務改善!ってニュースを見て…

関数マクロ複数シート・他セル参照他を禁止されてるワイ涙目

今日CSVの数値を電卓計算している。毎日電卓使うかどうかを上司監視されている。

2024-03-10

SUM関数業務改善で高評価だって

いいよな!女は楽に評価してもらえて!

ワイなんか紙ベースでやってた仕事ほとんどエクセルでできるように環境整備して、

事務員さんが3人で1週間かかってた仕事を1人で半日で終わるまで圧縮したら、

事務員さんごと全員クビになったのにな!

2024-03-04

中学生の息子に勉強を教えるときにやった内容

小学校小6~中学1年まで極度に勉強ができなかった。

テスト問題文の理解ができなかったり、問題文の日本語は読めるが表現が気になってその所を何度も確認して先に進めず1問目以降白紙などもあった。

このような状態だと学校集団塾では改善はしないだろうと感じたので、自分勉強につきっきりになることにした。

幸い、私はある程度勉強はでき、中学レベルなら英国数ならほぼ満点はとれる。

まず、問題文を読んで頭がパンクしてしまうことに関しては、深く考えるとパンクしてしまうということなので、そのパンク兆候がでたらその問題から離れる訓練をした。

日々の家庭学習問題集をとかせ、それが発生しそうなら知らせてスキップする。

テストときでも、損切して0点を防ぐ効果がでた。

そのあと、問題文でパンクする問題を一緒に説いて、問題文は何を求めているのか2人でじっくり考えるようにした。

そうすることで、問題文の表現パターンが分かり、次第にテスト問題文の意味が分かるようになってきた。

もともと息子は社会理科は興味があるので、問題文が読めればある程度テストでも点数が取れるようになった。

(一部追記)

なぜ小6から勉強ができなくなったのかというと、小学校の頃は雰囲気でやってもなんとかなっていたから。

しかし高学年だと英語もはじまり、内容も高度化して遅れていった。

私も「小学生なら特に何もやらなくても大丈夫だろう。」という楽観もあった。あまりテスト結果もみてなかった。だがそうならなくだんだんと置いていかれるようになっていた。

よって、6年からできなくなったというわけではなくて、表面化したという表現が適切かもしれない。

数学

問題問題が解消された後は、数学理解が進んだ。

算数小学校時代は苦手だったが、中学にきて意外にも好転してきた。

正負の計算方程式最初の関門だが、正負の計算で今まで『0より小さい数字になるような引き算はできない』というルールに感じていた気持ち悪さが解消され、調和した四則演算ができるので一気に数に対する理解度が増した。

方程式はやり方を教えて何度かやっているうちに、四則演算理解度が高まっていたので難なく扱えるようになった。

その流れで、連立方程式も進んだ。

一次関数数学の第2の関門だが、これは科学史への興味が効果がでた。

デカルトについてと、代数幾何学を同じ計算でできるということを教えたら、興味が増し。

交点が連立方程式でとけることに感動していた。二次関数自主的に予習していた。

国語

興味がある本はどんどん買った。

私が持っている本も年齢的に理解できないとしても貸した。

はじめは音読で読んでいたが、次第に黙読になりスピードもました。

最近国語の読解問題もとけるようになってきた。

たまに私が読んでいた本を息子が読んでいるときに、理解をしているか要約させたりしている。

英語

これが今もできない

元々、文章理解して意図を汲むというのを苦手としていた上に、日本語構造が違うので理解の糸口が見つからない教科だった。

単語の読み方も法則が分からないようで、理解が難しいようだ。

まずは英語文法と成り立ちから教えた。

ラテン語からゲルマン語、ノルマンコンクエストフランス語が入ってきたといういくつかの文明の交わりで言葉が変わっていったというところ教えた。歴史が大好きなのでこういうので覚えてくれる。

曜日ローマ神話、月名とラテン語の数詞とカエサルアウグストゥスなど、そういった言葉語源も添えると覚えてくれる。

そのあとで、主語動詞特に中学校では後半にやるけど5文型は先に教えた。この子構造理解したら先に進めるタイプなので、文法構造からやった。

そのかいあって、単語並び替え問題等では最初は全くすべてをランダムにおいていたのに、今は少しずつ文法構造はわかってきた。

文法は言われればわかるが、単語がどうも覚えられない(覚えてくれない)

単語効率の良い覚え方はレクチャーしたが、英語以外の教科では理解をした後に一気にすべてがわかるブレイクスルー体験したがために、どこか暗記に銀の弾丸があると思っている節がある。

から本人は怠けてしまう。

1年1学期の白紙よりかは良くはなってきているが…今後、改善必要ポイントだ。

勉強のやり方

定期テスト後に学校指定問題集を提出が義務付けられている。

テスト直前になると問題集を解くだけに忙しくなると勉強ができないので、2週間くらい先を進めて予習して問題集をやらせている。早めに課題を終わらせて、自分自身の問題点に向き合える時間をふやす

余談だが、学校でもその問題集を使うので毎日持って帰るのが大変だ。今は学校では置き弁がゆるされているが(じゃないと運べない量)、ちゃん勉強するとなると荷物が大量になるというジレンマがある。

インプットアウトプットの間隔を短くさせるために、1ページごとに採点・間違えたところの確認・再度問題を解く・というサイクルを持たせている。

最終的に、独力で自分課題発見解決のサイクルができればいいが、まだそこは難しい。問題がとけない原因を言語化させるように努めている。

言語化ができれば、半分以上解決したようなものだ。

採点の際には私も一緒にやって理解度を確認している。その際には、あてずっぽうで答えて当たったことをさせないために、回答の根拠ちゃんと聞くようにしている。

今やっている範囲以外のことの理解も足りているか確認もここでする。英語だったら授業範囲ではないが、以前やった単語表現が出てきたらちゃん理解しているかを聞く、

学校指定されている問題集以外にも、たくさん解かなければ身につかないので、市販問題集で補ってやっている。

試験を想定した実戦形式問題場合時間を短めに設定して、制限時間内に終わらせるようにしている。

これはなるべく家庭学習で実戦より難しい状態にしておくことで、実戦が楽になるためだ。

以前のように問題文でパニックになるのを防ぐためでもある。

学校と塾について

学校はあまり勉強に熱心でないと感じた。

良い教師もいるが、教えるのが苦手な教師もいる。

それどころか、学校教科書も体系立てて書かれておらず、そのまま読んでも理解しづらい。

特に英語に感じたことだが、読む・聞く・話す・表現する を重視するあまり文法単語に関してはサラっと先に進んでいる。

指導要領が増えているため時間がないのかもしれないが、とにかく内容がスカスカだと思う。

to不定詞を例にとれば、名詞用法形容詞用法副詞用法 があるがそれをまとめて説明しているページがなく、

英語表現コラム的な位置ちょっと書いてあるだけなのだ

旺文社の『中学総合研究』など総合的な説明が書かれている本を買って、体系づいた知識アクセスできるようにする必要がある。

これに関しては数学も同じだ。

また、受験に関しても中学校の教師はあまり良いアドバイスをしてくれない。問題の傾向などの情報も持っていないようだ

私は塾はなるべく通わせたくなかった。本人の集団学習に馴染めない傾向というのもあるが、それだけでない。

高校義務教育でないにしてもほとんどが進学するようになった現在、進学への対策義務教育の範疇だと思う。

貧乏でも義務教育をちゃんとしていればいい高校に入れるべきなのだが、塾に通わせなければならない現状はおかしいとおもう。

また、塾と部活をやると大人でも過労死基準労働時間に相当する拘束時間になってしまう。それを子供に強いるのはおかしい。

なので、社会の歪みをそのまま迎合するのも避けたかったので、学校がクソなら親の私がその穴を埋めようとしていた。

だが、今年の春から中三なのだが、学校高校受験に関する良い情報を何一つ持っていないので不安しかない。

また、英語がやはり伸びない。

私は勉強はできても教えるプロではないので、やはりプロの力は必要だと思い、個別指導に通わせることにした。

受験の開幕前だが、今までを振り返ってみるとまあ親としてちゃんとできたかなとは思う。

引き続き、今後も息子の自己学習監督していく。

追記

反響があって驚いている。

読み返してみると、勉強のことばかり書いていて詰め込みさせ過ぎなんじゃないかという印象を与えそうなので、一応勉強以外のことも追記しておこうと思う。

まず、ゲームスマホ禁止をしていない。

私がゲームをするし不公平だし、禁止したところで不満が出るだけだ。

ただ、ゲームも「負けて・リプレイをみて・問題点を改善して・試合に挑む」という姿勢学校勉強と同じだということ。成績の上位層の生徒はゲームも大体うまい。ということは教えている。

ただ、ゲームカジュアルにやってほしいので、介入することはない。

スマホ問題をとく15分か30分はLINEをしないという制約をつけている。やることは一つに絞れと。

どうやら女子メッセージ取り合って一喜一憂しているらしいが、私は気づいていないふりをしている。

恋愛などに介入すると親への信頼を損なう可能性があるからね。

2024-03-03

面接に来たおっさんExcel使えるって言ってたけどパワークエリVBAも使えなかった。何でエクセルできるって嘘ついたんだ?

この前、職場事務職(月21.7万円)の面接無職おっさん(48)が来たんだが

パソコンスキル質問

そのおっさんが「パソコン得意です。Excelできます」ってドヤ顔で言ったんだよね


そこで俺は「パワークエリVBAできる?」って聞いたら

おっさんが「できません…」って言い出して呆れた😅

ExcelなんてそれこそパワークエリVBaできてなんぼなのに


じゃあ何ができるんですか?って聞いたら関数とか…って言い出してドン引きしたわ


そんなん教えたら誰でもできるもんやん


パソコンテスト一応やらしたけど、関数にvlookup使ってたしこれはないなあって思って落としたわ

無職からって暇つぶしに冷やかしに来るのやめてくれよ。。。

2024-03-02

anond:20240302134740

同じ様な関数が全部の行に入ってるけどソートしたり行を削除したせいか途中でズレてたりするのが地獄

anond:20240302133831

素人の書くクソVBAより、関数の方が把握しやすいことが多い

anond:20240302125905

素人の書くクソ関数より、VBAの方が把握しやすいことが多い

anond:20240302043100

listobjectを普通に使って不規則な並びの表を作らない

LET関数を使って読みやすく書く

これだけやってくれればそんなに凝らなくてもいいのにな

エクセルは余計なことをするやつが多くて困る

anond:20240302125255

関数でできることは関数でやれ、というのには同意

最近は便利な関数も増えた

昔はVBAで処理したり関数作ってたようなものも、Excel側で用意されるようになった

業務で何かしらの処理を入れたい場合、闇雲にVBA書くより、新しい関数に何があるか確認してからが良いと思う

anond:20240302043100

VBA嫌いのExcel師(営業事務)なんだけど、その程度のことをVBAでやろうとするヤツを駆逐したい。

お前は営業や他のユーザー理解度自分レベルだと勘違いするのをやめるべき。

うちの会社はVLOOKUP(最近INDEXMATCH)組めるのが「Excelできる」と名乗っていい最低限のラインで、営業営業事務では名乗れないやつはほとんどいない。でもVBAは使える人は稀。

基本はその「難しくてもVLOOKUPの知識を駆使すればなんとかなるレベル」でExcelを組まないと破綻する。

なので計算用シートは絶対必要

うちの会社の一事業部複数会社発注をしていて、そうすると会社ごとにデータ比較して見たいのに項目や項目順が違って簡単比較できない、ということがよくある。

その場合マッピングと呼ばれるデータ項目の統一化が必要なんだけど、会社によって合算したいデータがそれぞれ別の方法しか取れないとか、合算値に余計なデータが入ってるからrawデータ取ってきて件数レコード数でカウントしないといけないとか、まぁ色々出てくる。

取引に対してのデフォルト対応としての統一マッピングはしてるけど、そういうのはVBAでやらずにSaaS使ってるし、ものによって重視する値が変わるので例外が2割くらいある。うちの会社はその辺りの裁量営業に認められているので例外も多め(なおオンリーワンになりたいためだけに特殊対応した奴は一人を除いて矯正or自滅済)

そういう融通をきかせるのにExcel計算シートでマッピングするのは絶対

あとVBAだと営業側が「どういう計算をしてるのか」とか「正しい数値が出てるのか」が確認できない。

っていうのは例えば100円3件と150円2件の仕入れにうちの取り分2割乗せて720円として見せたかったのに、『=100*3+150*2*1.2』って数式書いたせいで660円になっとるやんみたいな。こんなんよくある眠い時のヒューマンエラーで、VBA書く人ならやらかさない、なんてことは絶対ない。

しか営業がこういうのの修正とか提案用にちょいちょいと列増やして数式入れようとしても「マクロ壊れるからやめて」とか言われる。営業自分で調整可能なら1時間以内でできるものでも、VBA書いた人に依頼しなきゃいけないんだと、書いた人の通常業務との兼ね合いで1週間待たされたりする。

営業からしたらそんなもんVBA野郎エゴ中のエゴですよ。

営業に金稼がせるためには営業利便性裁量必須で、Excel利用者裁量権が認められてないVBAツールなんか全体最適化されてないクソ。

※なお裁量大きいからってあんまり好き勝手するとやらかした時に他の助けも得られず(やれることに限界がある)自滅ルート

自分も軽くVBA習得してるんだけど、フォルダ内のデータ一括読み込みとシートの分割統合関数代わりにしか使ってない。しかもただの効率化なのでVBAが死んだところで手作業に戻せる範囲

他人保守できるように作るのならVBAなんか入れるべきではないし、VBA入れないなら計算シートは必須。あと計算周りを大掛かりにやるならSaaS入れてDX検討すべき。

anond:20240302043100

原則関数とピボットテーブルのみで完結させ、マクロは使わない。ってのが良いと思う。

DBからデータぶっこ抜いたり(今のご時世は出来ないと思うが)、外部ファイルを読み込むとかしないで、ブック内のデータを処理するだけならマクロいらんやろ。

数十万以上のデータ件数になるとさすがにきついけど、そうでもなければ関数駆使すればだいたいいける。

てか、Excelお絵かきソフトであって、表計算として使うんならGoogle Spreadsheetの方が絶対に良いわ。

有楽だし、誰がいつどこをどう変更したか履歴勝手に残るし、壊れないし。

anond:20240302043100

EXCEL原理主義からするとマクロを入れる時点でワークシート関数は入れない。

マクロがあるEXCELは読み取り専用。

アウトプットEXCELでもCSVでも別ファイル

入力画面はフォームにする。

複数コピペでやりたい時だけ、入力用の空シートにするけど、それだったらCSVファイル連携

1ファイル配列に突っ込むのはメモリが怖いのでやらない。今ならほぼ大丈夫だと思うけど、ストリームで処理する呪いにかかってる。

計算用シートっぽいものを使うとき

商品マスタとか参照するときに、外部データ範囲DBからマスタをシートに張り付けて使う。1万件ぐらいまでならデータADOとかで取ってdictionaryに入れて検索するより、シートからVLOOKUPで取るほうがよっぽど早い。

エクセルマクロのお作法計算用シートという諸悪の根源について)

前置き

この日記の内容は、会社の後輩から最近エクセルマクロ勉強し始めて(キラキラ)」という話を聞いて、先輩ムーブかますために話した内容になります

とにかくこれから説明する「計算用シート」が憎くて憎くてたまらず、ちょっと引かれるほど熱弁してしまいました。

ただ、他の方がどうされているのかや、逆に「計算用シート」を愛用する方の意見も聞きたくなり、増田に書いてみました。

増田の経歴

この記事趣旨

エクセルマクロのお作法とか書きましたが、要するにエクセルマクロで「計算用シート」って色々な意味でよくないよね、という話をしたいです。

3行でまとめます

〇 エクセルシートはユーザーインターフェースインプット)か出力結果(アウトプット)のためのものとすべき

〇 データ加工をする場合には、原則配列辞書配列連想配列)に格納して加工を行い、最後の結果だけシートに出力するべき

〇 何事にも例外はある。

計算用シートとは

この記事では、エクセルシートを下記の通り分類します。

エクセルマクロにも色々あると思いますが、今回は下記を想定します。

日付や人物名などを入力し、データベースや別のエクセルファイル、別のシートから取得したデータ入力された値を基に加工し、加工後のデータをシートに出力する

この場合入力欄があり編集可能なシートがユーザーインターフェース、最終的に加工されたデータが出力されるシートが出力結果です。

(もちろん、ユーザーインターフェースの別の欄(セル)に出力する場合もあるし、その場合ユーザーインターフェース出力結果が一体のものとみなします。)

また、データ用シートは同じエクセルファイル内に基となるデータが含まれ場合を想定します。

(これ自体が非推奨で、SQLデータベースかせめてAccessを使え、という意見はありますがそれは別にして…)

ではここで定義する計算用シートとはなにかというと、文字通り計算を行うためのシートです。

例えばイメージするのはこんなマクロです。

1.元となるcsvファイルエクセルに読み出してシートに格納

2.そのデータは日付が数値型になっているので、日付(数値型)の入った列を文字列に変換した日付(文字列型)列を新たに作成

3.その列をキーとして対象となるデータを取り出すvlookup関数を各行に格納した列を新たに作成

4.その列で特定された列をさらに加工した列を新たに作成し、…

これは極端な例ですが、とにかく変数配列定義せず(あるいはエクセルセルオブジェクト変数のように扱い)、エクセルに値を入力し、それを直接加工することで目的となるデータ加工をしたり、様々な処理をします。

その舞台となるのが、計算用シートです。

なんかこんな感じの処理をしているエクセルマクロ、どこの会社でも腐るほどあるんじゃないでしょうか。

ある程度マクロに慣れた気の利く人なら、このシートはロック非表示にして、ユーザーから触れないようにするでしょう。

・・・これ、やめたほうが良くないですか?

こいつが日本生産性を落とす諸悪の根源だと思います

駄目な理由

ある程度詳しい人なら同意してくれると思いますが、このやり方でダメ理由はいっぱいあります

後で説明する配列辞書配列連想配列)と比べると格段に処理が遅いです。

わざわざエクセル操作しているから当然ですね。

ちょっと詳しい人が知っている「画面更新非表示」を駆使しても、配列を使った処理からみれば止まったハエです。

(参考)VBAで作ったマクロの高速化① 配列を使う

  • 可読性が下がる

いったんエクセルシートにデータを格納して加工しているので、コードエクセルシートを両方見る必要があり、とても読みにくいです。

変数として命名されていないのも致命的で、処理の意図が余計に分からなくなります

計算用シートを事前に用意して、別のセル関数を格納しておき、マクロ関数を使ってデータ加工をするものも見たことがあります

これは懲役刑に処したほうがいいと思います

まり知られていませんが、セルの最大文字数は32,767 文字です。

セルの最大文字数を超えると自動的に隣のセルに値が入り、シートが滅茶苦茶になります

他にもエクセルの数値を丸め自動変換の仕様とか文字列→日付の自動変換とか、いくつものバグに苦しめられます

できる人だと、いちいち最大文字数が多い場合の処理を書いたり自動変換機能を殺したりしてくれますが、そんなことに手間をかけているか日本GDPは上がらないんだと思います

他にも、データが大きくなると処理が重くなり不安定になる、計算用シートを人が触ってしまリスクがある、などいくらでも理由は上げられます

(逆に利点は、目の前でガチャガチャ動いてスーパーハッカーになった気分になれるくらいしか思いつかない・・・

じゃあどうするの

配列を使いましょう。

配列とは何ぞや、という人はググってください。

配列データを入れて、データ加工は配列変数に対して行い、一番最後の出力だけセルに値を格納する。

他のプログラミング言語なら普通にやっていることです。

個人的オススメしたいのは辞書配列連想配列)で、うまく使うとデータ管理簡単になり、処理も爆速になります

(参考)【VBA】大量データから高速で値を検索【Dictionaryを使う】

csvファイルもなまじエクセルで開けるだけに別のブックやシートで開きがちですが、これは悪魔のささやきです。

直接ファイルを読み出してLine InputやSplitで配列に格納しましょう。

エクセルとして開くやり方はコード書くのは簡単でも、実行時間に天と地ほどの差が出ますエクセル開くと処理もめちゃ不安定です。

(参考)Excel VBAでCSVオープンするときのパフォーマンス比較

いや、冒頭のマクロを書く人の気持ちも分かるつもりです。自分コードを書き始めたころは全部シート上で操作していました。

冒頭のマクロのほうが直感的なんですよね。自分が手で書くことをマクロやらせる、というマクロ本来趣旨にはあっていますし。

途中の計算過程もすべて目の前で展開されるから分かりやすいです。

ただ、それではダメなんです。。。処理は遅いし挙動不安定だし後で改修・保守する人が死にます

あと、エクセルシートやセルは当然エクセルしかないので、エクセルマクロVBAから他の言語に移れなくなります

自分エクセルマクロの里の出なので、計算用シート脱却には苦労しましたが、苦労して会得した配列辞書配列連想配列)のスキルはそのまま他の言語に活かすことができました。

配列の中身を見る方法別にある(ローカルウィンドウやDebug.printを使うなど)ので、リハビリに取り組んでほしいです。

(参考)VBA デバッグの仕方

もちろん例外もあります

計算用シートを許容できる、使うべきケースもあると思います。。

個人的には、

最後のは、なんでも自分確認しないと気が済まない上司発注で、意味不明と思いましたしたがしぶしぶやりました。)

などの場合計算用シートを使ってもよいと思います

この場合インプットエクセルシートに直接加工するのは論外なので、計算用(加工用)のシートを用意してそこで操作を行うことは必要だと思います

他にも、こういうときは「計算用シート」があったほうが良い、という状況があれば教えてもらえると嬉しいです。

最後

そもそもツッコミとして、「データ加工するならエクセルマクロを使わずpythonとかRとかもっとまともな言語使えよ」という言葉が来そうな気がします。

ただ、個人的にはエクセルマクロVBA)は大好きですし、初心者にもおすすめしたいです。

自分のような非エンジニアだと、セキュリティ関係などでPythonの開発環境とかすごく用意しにくいんですよね。

(あと、コマンドプロンプトの真っ黒な画面が怖かった)

その点エクセルマクロは、開発環境の用意はプロパティでチェック項目を一つオンにするだけだし、入門書がたくさんあるし、セル挙動を追えば視覚的にプログラム理解できるし、初心者に優しいです。

(そのやさしさが上述したとおり悪魔の罠なわけですが。)

最初計算用シートに頼ってでもエクセルマクロからプログラミングを始めて、本格的なデータ加工をし始めたあたりで計算用シートという諸悪の根源から脱却する。

さらに本格的なデータ処理を行うために、PythonやRなど別の言語習得したり、エクセルからSQLデータベースやACCESSなどに切り替えていく、というプロセスがいいのではと個人的に思います

2024-03-01

月末日の取得方法

ライブラリにある標準的実装使用する

言語によっては標準的に月末日を取得できる関数が用意されている

それを使うのが一番簡単バグが出ないが

用意されてない場合もそこそこあるし

サードパーティー的なライブラリだとライセンスなどメンテナンス含めて面倒になるので避けることも多い

月末日にせずに28日にする

そもそも仕様を「月末日」などという不確定なものにせずに28日にしてもらう

どの月にも28日はあるので問題無い

ちゃん仕様を決める部門連携が取れていれば多くの場合28日にしてくれるし

28日支払い」が多いのもこのためだと思ってる

翌月マイナス1日で計算する

割とよくある実装がこの「次の月初めから1日(1秒)引く」という実装

2024年2月の月末日を取得する場合2024年3月1日UNIX時間から24*60*60秒を引いて計算する

ただし、実装を間違えると12月31日ときに失敗するので注意が必要

自分実装する

各月の月末日をマップとして保持しておいて取得させる

関数実装するなら if(month==1) return 31 とかを12行書けば実装できる

この場合閏年考慮していないと4年に一度バグが発生する

閏年の判定はライブラリ標準的実装されていることが多いが

自分実装する場合プログラミング教科書にあるぐらい有名なのでコピペでもChatGPTでも使えば良い

ただ仕様をそのまま実装せずに「4で割り切れたら閏年」でも問題無い(やったことはないが)

「それだと2100年でバグる!」

などと騒ぐやつがUNIX時間を使ってるのはなかなか興味深い

ちなみに過去の日付であっても2000年バグらない(そのための400年処理だし)ため

1900年を入れない限りは問題無い

最高齢の人でも1900年からなので基本的には問題無いだろう

たまにプルダウンで1901年からしか入れられないシステムを見るが、「もしかして閏年のせい?」と思ってる

2024-02-29

問1

顧客バスタブに精液を貯める作業自動化検討しています。集められた男性の数は3000名で、射精一回あたりの精液量は0.5mlから15mlです。バスタブには最大200Lの精液を保存できますが、200Lを超える精液は保存されずに破棄されます

最も効率的ソリューションは次のうちどれですか。

 

男性勃起状態監視するアラーム作成する。アラームが起動した時に睾丸内の精液をバスタブに転送する。バスタブが満杯となった後に射精をした男性には精液を後日持参させる。

②すべての男性の精巣に Ejaculation Manager をインストールする。男性射精イベントに合わせて精液をバスタブに転送する。バスタブが満杯の場合は別のバスタブに切り替える。

③すべての男性に対して射精たかどうかを確認する関数作成する。射精をした場合は精液をバスタブへ転送する。バスタブが満杯の場合は別のバスタブに切り替える。

男性器の先端に精液解析器を設置し、射精した精液をスキャンする。得られたデータを元に精液を生成し、バスタブに保存する。バスタブが満杯の場合は別のバスタブに切り替える。

2024-02-25

[] 全部を書き直す必要はない

コードエントロピー機能追加によって増大する傾向にある。

「この関数にこういうパラメータを使ったこういう処理を追加してくれ」などと言われたら、コードは複雑化するのは当然だろう。

かといってこういう要求が来た時に、コード全体を一から作り直して簡潔にしようと思うのはナンセンスだ。

コードの量にもよるが、一定程度の量のコードがそこにあるときは、やはりリファクタリングの方が効率よく進められる。

「僕はリファクタリングなんてしませぇん、一から書いた方がいいでぇす」というのは、特定現場・状況だけにあてはまるものだと認識しておこう。

かにコード全体をリファクタリング」なんてしようと思ったら大変すぎるが、通常は「修正担当する部分をついでにリファクタリングする」でOKだ。

ユニットテストさえかけていれば、そのリファクタリングによって、バグが見つかりやすくなるだろうし、保守性も上がるのである

なお、本当にコードベースが酷いカオス状態で、ゴッドオブジェクトを使っているような状況になったら、「書き直す」という利点が少しはあるかもしれないが、そういう場合関係各位に同意を取らなければやってはいけない。

そういったカオスな状況でさえ、平均的なプログラマーは「良いコード」よりも「慣れているコード」に愛着を持つ傾向にある。

もしあなたが「コードを綺麗にするためにすべてを一から書き直そう」と、無断でそのようなことをやったら、彼らが慣れていないという理由批判の嵐が殺到するだろう。

もう一度言うが、最善の方法修正担当部分だけをついでにリファクタリングすることだ。これだけにとどめておけ。

ログイン ユーザー登録
ようこそ ゲスト さん