はてなキーワード: VbAとは
今はしがないフリマアプリの事務スタッフ(カスタマーサポート)だが、昔は関東にある地方自治体で役人をしていた。年末ということで、その頃の思い出を振り返ってみたい。
ちょっと気になる同僚がいたのだ。その人をメインにしてエピソードを書いていく。できるだけ穏便に書かせてもらうが、かなり前のことだしぶっちゃけるかもしれない。
関東地方の比較的田舎にある自治体だった。当時の自分は、26才になる年だった。福祉の部署……『福祉課』としようか(もう少し洒落た名前)。俺はそこにいた。
4月の年度初めだった。同い年の新入職員が配属になった。民間企業に3年勤めて、地元に帰ってきたらしい。
その職員を観たことがあった。何を隠そう、彼と俺は同郷であり、大きい山の上にある公立中学校に通っていた。どちらも地元育ちだ。ただ、当時の彼のことはあまり思い出せなかった。見た目がもっさりしているのは変わらずで、ちょっと日に焼けたかなって感じだった。肥満ではないが、ガリガリというわけでもない。中ほどの体型だ。
自分はというと、専門学校を出て新卒採用後、福祉課に配属されて6年目だった。そろそろ中堅として難しい仕事を~というところにきてた。課のメンバー、という意味ではベテランだ(地方公務員は3,4年で異動が一般的。国家公務員は場合による)。社会福祉法人を指導する仕事の(先輩や上司の)お手伝いをしてたんだが、いよいよ自分が主担当になった。
前年度は、40代の主査級の職員がその仕事を担っていた。20代の自分に務まるか不安だったが、何とかしてやろうって気概に満ちていた。
ところが……上で話した同郷の職員というやつが、いわゆる問題職員だった。福祉課だから、F君としておく。彼は年度当初から、とにかく先輩や上司に怒られていた。同じ課でも違う業務グループだったから(※課の中に係ではなく業務グループがある制度。係制との違いはよくわからん)、そこまで状況は把握してないが、こんな行動傾向だった。
なお、これを書いている時は、はてな匿名ダイアリーで「Bさん」なる概念が流行っていた。Bさんというのは、葬送のフリーレンでいうところの『魔族』である。F君は、その仲間かもしれない。ただ、後で述べるがBさんとは違うような気がする。
・ほうれんそうしない
・判断がつかないことでも押し進める
・注意してきた先輩や上司を睨む
・ミスをしても謝らない
・会議や打ち合わせでしゃべらない。二言三言はしゃべる
・尊大というほどではないが、堂々としている
・飲み会に出たがらない
具体的なエピは、すまないが出せない――まあ、部分的にならいいか。F君が電話を受けて、必要な事項を先輩の人に共有しておらず、叱責を受けていたのを覚えてる。
「おいF。なんで共有しなかった?」
「別にフツーです」
「普通って何なん?」
「わかりません」
「あ!? もっぺん言ってみろや」
ここで先輩が立ち上がった。F君の椅子の前に行って、「きちんとしゃべれや、おい。もしかして、お前障害とかある? 俺のガイジーカウンターが反応してんだよ。正直に言われても、身障みたいには扱えんけどな」みたいなことを言った。そしたらF君は、「怒っても何も解決しないのではないですか?」と確かに言ってた。で、また先輩が「お前、このままやったら駆除すんぞ!! ゴキブリが……」と怒りの声を発した。
惜しむらくも、この当時は職場でのこういう記録をメモしてなかった。上のやり取りはうろ覚えだ。これ以降は、自分の身を守るためにも一応メモするようになった。
で、厳しいやり取りが続いていたが、誰も止めに入らなかった。単純に面倒くさかったのかもしれないし、関わり合いになりたくなかったのだと思う。ある1人の女性職員が、気持ち悪そうな顔をして席を立って、どこかに行った。おそらくストレスなのだろう。
よくキレることで知られた先輩だった。実をいうと……F君がいる施設グループというのは、問題職員が6人中4人(F君含む)を占めていた。人事課からマークされた職員が配属されやすい。
それらの先輩方は、仕事能力は問題なかったが、勤務中にキレたり怒鳴ったり、仕事道具を机の上に叩きつけたり、所得が少ない市民とか、病気や障害がある市民を侮辱する発言を繰り返していた。
いいかげん、上の2人がうるさくてしょうがなかった。先輩はやいのやいの騒いでいるし、F君は不気味なほど冷静にボールを撃ち返している。その内容は覚えてないけど、アドラー心理学の本(岸見一郎が書いた『嫌われる勇気』)みたいだった。「それはあなたの課題でしょ。私の課題じゃないでしょ」みたいな。
『嫌われる勇気』って、すでに嫌われてる人が自分を肯定するために読んでる印象がある。本の表題は『嫌われ続ける勇気』が妥当だろう。
あと、『エッセンシャル思考とか』とか『限りある時間の使い方』みたいな本ってさ、基本は自己中な人が書いて、同じく自己中な人が愛読してる印象がある。合理的なのがそんなに大事なんだろうか。人生には無駄が必要なんじゃないか。自分らしく生きるのが一番いいって、おかしくね? 自分らしくなくても、社会のために生きることって大事なんじゃないかな。こういう本が流行っていると、古来からの伝統的な価値観が解体されてるみたいで気分が悪い。
さて――この『先輩』というのはマジでキレやすい。役所内でも札付きだった。思ったことを何でも口に出す。例えば、福祉課の小さい事業で「特定の高齢者向け福祉用品を買うと2/3を市が負担~」みたいな制度があった。
そんな制度があるのはいいのだが、たまに悪質な業者がいて……社会人経験が豊富な増田読者なら想像がつくと思うが、例えば小売価格10万円の品を「自治体の補助金があるからお得!!」ということで、市民の人(高齢者が多い)に10万円……ではなく、なんと15万円で売るのだ。業者は補助金なしの場合と比べて5万円儲かっている。ひどい業者だと20万を超える。要するに、市のお金が業者にもっていかれている。
その『先輩』は、ある時そんな事案を見つけて、業者に電話してケンカになった。渡り廊下の向こう側まで聞こえるほどの声で、電話口で業者と争っていた。
これを三回くらい叫んでいた。凄まじい勢いだった。相手方の声は聞こえないが、ベイブレード同士がぶつける以上に激しい戦いなのはわかった。
戦いの最後になると、「お前。武蔵野市の会社だったな。都庁と武蔵野市に情報共有しとくからな。覚悟しとけよ、ボー―――――ケッ!!」と叫んだ。そして、ひと呼吸おいた後で、「……お前はもう申請しちゃだめ。申請があっても、受付せずに却下するから。市民の○○さんにはこっちから連絡しとくね」と告げて電話は終わった。
その後、先輩は本当に、同じ県内と都内の地方自治体で、うちと同じ制度をやってるところに注意喚起の電話をしていた。
※数年後にわかったのだが、その先輩は後天的な精神病だった。若手職員の頃に、反社対応の仕事で無理をしすぎて、頭がおかしくなったという話を年配職員から聞いた。現在は退職している。
それはさておき、F君と先輩職員のバトルに戻ろう。俺は、あまりにうるさかったので止めに行こうと思った。先輩職員はヒートアップしていて、口汚い言葉すら発していた。増田では書けないほどの。「お前みたいなゴミはゴミ処理場で引き取ってもらえや」くらいのことは言ってた。
「うるさいぞ、黙れ!」
ようやく止めに入ったのは、F君がいる部署のグループリーダー、係制でいうところの係長だった。民間企業でいうと課長くらいか。普段はマジメで寡黙な人だが、怒るとコワい。例えば、福祉課にいる若い女の子目当てで、弱者男性の職員とか、チャラい見た目の職員とか、おじさん職員とかが話しかけにくることがあるんだが、そのグループリーダーが「お前、職場になにしに来とるんだ。キモイんじゃ帰れ!」と一喝すると、みな一目散に逃げていく。
「ハラスメントですよ」とそんな人達の一部が言い返すと、「じゃあ、人事に行けや人事に。なあ、お前がキモイことしてたの、お前の上司に共有するからな。それでいいな?」と睨み返すのだ。
でも、基本は頼りになる上司だった。普段の事務仕事でも、打合せや会議でも、公式行事やイベントでもマジで頼りになるグループリーダーだった。
先輩職員は、そのグループリーダーから一喝されると押し黙った。F君に向かって「ボケ!!」と叫んでトイレに向かった。F君の顔を見ると、いつものぶっちょう面だった。よく言えばクールで、悪く言うと人間味がない。この時になって、F君の中学校時代を思い出したんだっけ。
当時もこんな感じだった。スポーツは◎で、勉強も○で、家柄も○なのだが、いかんせん、こいつ本当に人間か? というくらい協調性がない。言いたいことをストレートに言い過ぎるのだ……。それでいてわがまま。
先生もよく怒らせていた。もちろん生徒だってそうだ。彼はクラス中に嫌われていた。キャライメージで言うと、ひろゆきがもうちょっと謙虚になった感じのキャラクターだった。プチひろゆきだった。
しかし、本人自体は何かに本気で取り組んでいる。実際、F君は剣道が強かった。関東大会まで勝ち抜いていた。市役所内で後に聞いたところだと、大学の剣道部ではインカレに出場したらしい。
-----------------------------------------
官公庁が税金で追い出し部屋を作るのは実務上難しい。よって、いろんな部署にある程度の人数の問題職員を押し込めてバランスを取っている。現場に行くタイプの部署や、窓口対応をする部署に多い。優秀な職員は、企画政策室とか財政課とか人事課とか監査室とか議会事務局に行く。一般向けの窓口部署に配属されるのは稀だ。え……心当たりがある?
当時の福祉課は、『陸の孤島』に準ずる部署だった。陸の孤島というのは公務員業界の俗称で、いわゆる水道局とか教育委員会とか支所機関とか、こぢんまりとした事務所がポツンとあるタイプの職場だ。福祉課は、内部に福祉事務所を抱えてるから、本庁舎の中にあるが長い廊下で隔てられている。怒号もあまり市民には聞こえない。いや、福祉課に来客中の人には当然聞こえてしまうが、そこは愛嬌だ。
-----------------------------------------
F君は……今思えば、そこまで悪くなかった。あの当時は悪い奴だと思っていたが。実際、勤務態度は悪かったよ。ほうれんそうしないし、自分の判断とか解釈を押し通すスタイルだし、上司を上司とも思ってないし、仲間を仲間とも思ってない節すらあった。でも、彼なりに仕事にマジメに取り組んでるのはわかったし、広告代理店で働いてただけあって、公務員側の人間と感性が違うのはしょうがなかった。
ただ、やっぱり協調性はなかったな。人間味もなかった。あれは、なんというんだろう。発達障害とは違う気がする。というのも、職場がヤバい(※業務グループがピンチの意)となった時だと、ほかの職員以上にリーダーシップを発揮したり、イベント参加者を取りまとめたり、困難な事態を打破するような企画を考えたりしていた。その意味では、ちょっと前に増田で流行ったBさんとは違う存在だと思う。仕事ができるBさんだ。人格や人柄は悪いけど。
シロクマ先生のブログを読んでる限りだと、人格性パーソナリティ障害みたいな扱いになるのだろうか。
(当時のF君の印象)
・オフィスソフトの腕に覚えアリ。VBAやAccessもちょっとはイケる。
・窓口のお客さんと難しい局面になっても諦めない。
・彼をよく思わない職員はいたが、市民や取引業者とはトラブルを起こさない。
この時点のF君は、1年目でまだ実力がなかった。別の問題職員からロジハラみたいなのを受けることもあった。とある女性職員(30代半ば。未婚。以下♀とする)がいたのだが、これがまた辛辣だった。
公務員というのは、『様式の中に生きる動物』といっていい。F君の発した伺文書(民間でいう稟議書)を事細かに見て、ミスがあった時はF君を詰っていた。あとは、やっぱり意思決定か。F君の担当業務は、新人らしい、基本的かつ奥深い仕事だった。ジャンルでいうと設備管理とか財産管理だった。その関係で、F君の行動や意見に甘いものがあると、その♀職員が詰ったり、怒ったりするわけだ。
これらはメモに取っている。全部♀の発言にしてるけど、F君は相手にしてなかった。ポツリとは発言してたが、聞き取れなかった。方言は一応そのままにしている。
♀「どうして○○ができひんの?」
♀「それはなぜ?」※何度も繰り返し「なぜ」と訊く
♀「お前、今なにしてた?」
※F君が相手にしないとこう言うことが多い
♀「お前に指導して、金がもらえるんか! おい、私に金払え」
♀「お前の私に対するハラスメント、女性部で問題にしよか? いい?」
※労働組合の女性部。よからぬことをする職員がいると、組合内新聞でさらし者にする。ひどい時だと本人の写真付きで紙面を配布する。
♀「おい、今お前の仲間が来はったで。一緒に帰らんでええの?」
話を聞いてる途中、俺はずっとイライラしてた。繰り返すが、この人は女性だ。増田読者の溜飲を下げるために言わせてもらうと、この人には約二年後に罰が下った。後述。
繰り返すが、この福祉課は陸の孤島に準ずる存在だった。やりたい放題する職員が昔から一定数いたらしい。例えば、市内の製造メーカーが市役所に対して、専門機器や専門器具を卸売価格で売ってくれる制度があった。それを悪用して、自分が購入した後にヤフオクやメルカリで転売する人がいたり……あとは、行事・イベントで大量に余った弁当やお茶やコーラやアクエリアスを、箱単位で家に持って帰る人もいた。
自分が知ってる年配の男性職員にも、そういうことをしてる人がいた。でも、やっぱり天は見てるんだろうな。その人は、飲み会の帰りに酔っぱらって、どっかの店で万引きして捕まってた。で、その年度末に当市から消えることになった。
ところで、変な職員のことばかり書いてきたけど、もちろん大多数は普通の職員だ。人柄がキチンとしてる。あなたが過去に、市役所とかで接客を受けたことがあるような。そんな普通の人たちだ。これだけははっきり言わせてほしい。
序章の締めになるが、増田読者の皆様も、どうか悪いことはしないでほしい。世の中はうまくできている。天は見ている。ぜんぶ自分に跳ね返ってくるのだ。
ここから先は、F君と俺を中心に、記憶に残っているエピソードを述べていく。すまないが、全部で二万字以上はある。まさかこんな文章量になるとは思ってもみなかった。
でも残念ながら派遣社員なので最大でも3年までしかここにいられないんだよなぁ
今後ここ以上に居心地のいいところがある気がしなくて今から辛い
【職場のいいところ】
・フリーアドレスなのもあって人と話す機会が少ない、出社してわざわざ同僚のところに行って挨拶する必要がない
・上司があんまりコミュニケーション得意なタイプじゃないからそんなに話さないで済む
・でもわからないことや助けてほしいことを言ったらどうにかしてくれる
・ときどき無茶振りとか上司の説明があんまり上手くなくて意味わからんってことはあるけど、それなりについていける範囲の仕事
・納期近く以外は割と暇でひたすらvbaのツール作ってる(vbaくらいしか書けないので)(というかvbaもここに入ってから本格的にいじれるようになった)(Pythonとかもできるようになりたいけどできるだろうか……ちょっとハードル高いイメージ……)
・社内に食堂がある、安い、それなりに美味しい
・フレックス。ただし派遣の管理監督者が出勤している時間に限るけど
・定時が短め。上述のとおりそんなに仕事は多くないから定時で帰れる。最近は8:30出社17:00退勤がデフォ。
・時給もまぁ、ただの事務よりは多い。
とりあえず上限まで居させてもらえるようにわからないことも頑張ってやる
ずっとこんな感じで働けたらいいのに……
複数の機能で成り立っている長いコードを分割して実装することののメリット/デメリットを教えてほしいです。
「コードの分割」が指してることを大まかに言うと、「メインの関数は各機能を呼び出すだけで、実際の機能の部分はサブルーチンとしての関数(って表現が正確かも謎)に持たせ、サブルーチンを順次呼び出すことで総体としての機能を成す」ような方式にするってことです。
より具体的に言うと、1.データの取り込み2.取り込んだデータの突合3.帳票の出力の3手順を別々の関数とし、メインの関数から1,2,3の手順の関数を順次呼び出すという具合です。
上記の方法と、全ての機能を詰め込んだ一つの長い関数にする方法と、どちらが結局よかったのかなと思っているんですね。
今のところ私は自分のわかりやすさのためにコードを分割する書き方をしています。理由は、1機能1関数で分けておいた方がステップインじゃないですけど「ここまでは完走できた」の切り分けがしやすいのかなーと思うのが一つ。もう一つは単純に上下に長くなっていくとどの変数がどれでと特定していくのが辛いってのがあるためです。
ただこの方法にも問題があると思っていて、一番はメイン/サブ関数間で右往左往するので今やってる工程が何なのかがよくわからん、他人が読むならなおのこと、ってことです。一応の対処として、メインの関数は目次的に「総体としてこのような機能を持っている、また分割した関数の機能はそれぞれこうである」とコメントアウトし、サブの関数にも「この関数はここからここまでの作業をします」とコメントアウトすることにしています。
あとは関数ごとに変数をいちいち定義し直すのがだるいみたいなのもありますね。グローバル変数は後々の修正とかのために使わないようにしています。
自分では思いつけてない部分でコード分割することのやばみってあるのかなーと思ったので質問させていただきました。近々退職する予定なので、他人への引継ぎって観点からどうなのかなと思っています。
以下自分語りです。語彙とか概念のインストールが足りないと適切な調べ方ができなくて困るんですねー。あと問題があることを認識できなかったり効率悪かったり車輪を再発明したりとか。
私は無学のバイトなんですが、あるとき上長から「暇なら適当にエクセルでも勉強しといて」と漠然と言われて、このVBAっちゅうもんを学べばええんか?と勘違いしたのが始まりでした。本当はセルの結合とか別のセルを参照するとか、エクセル方眼紙的なものをある程度作れるようになってほしかったらしいです。折角なのでなんとか役に立つものをと思って、ある集計作業を自動化させたところ、今後も暇なときはよろしくということになりました。
いろんなものを作りましたが何をどのように作るかから、その後の運用保守までほぼ一任してもらって大変面白かったです。しかしなにぶん仕様や実装方法について相談できる方がおらず全ては私の泥縄式学習術によって成り立っているという恐ろしい状態でした。体系的な知識や組織の経験知みたいなものが一切ないので自分がどこにいるのか、努力の方向性が合ってるのかも結果が出るまでわからない。先達のあらまほしきことなり。
ここにも何回か書き込んだけど、弊社にはエクセルファイルを破壊するMさんがいる。
何をどうしても破壊するので、基本的な入力以外できないようにロックをかけたつもりだったが、Mさんはまた破壊した。
「おかしくなってしまったんです……」とMさんに言われた私は「大丈夫ですよ」と笑顔で答えた。
マクロのボタンを押すと確かにおかしい。ある特定のファイルが開かれる様になっていた。VBAには書き込まれていないので、まさかと思ったらリンクだった。
Mさんはパソコンがとても苦手で、エクセルでどういった動きをしているか先日初めてみたが、本当適当に押したりするのね。
本人に自覚はなくて、セルの結合(しなくていいのに)したいけどどれか覚えられなくて適当に押して、結果こちらが思いもよらないことに…。
それでもMさんはパソコンを覚えたいみたいだけど、別に覚えなくても生きていけるから大丈夫。適材適所と声をかけてあげたい。
多分。また破壊される。
これ、応用情報技術者試験のR4春の午後の問3前半のコードと似ていて読めないようなコードではない。
https://www.ipa.go.jp/shiken/mondai-kaiotu/gmcbt80000009sgk-att/2022r04h_ap_pm_qs.pdf
応用情報のほうは添え字を一次元に展開しているのをChatGPTは二次元でやってるだけ。
問題後半では探索の効率化をやっていて、人間が解くように候補の数字のリストを作成してそこから処理するんだけど、ChatGPTのコードも少しの変更で速くなることはコード読んで短時間で判断できるから決して保守性の悪いコードではないでしょ。
むしろVBAかじった素人や、派遣の自称エンジニアのコードのほうが一般に酷い。
応用情報の方は誘導がありコメントの通り書くだけのラッキー問題で1問あたり30分で設問3つのうちの2つを占めるから制限時間20分だけど、ChatGPTはこれを一行命令で誘導なしで即答する。
一定水準の網羅性を考慮した動作確認用のいくつかの入力と出力の組を過去の業務データから用意して、テスト実行マクロもChatGPTに書かせてしまえば、変更があったときもコードベースで修正しないでプロンプトから出し直してしまえば中身がブラックボックスでもテストで品質確保するテスト駆動開発ができる。レビューなんかテストパターンの網羅性とテスト結果で十分よね。
業務をよく知っている人が業務内容をプロンプトに落とし込んでテストパターンを適切に準備できればVBAの知識はほとんどいらないし、その知識すらChatGPTのコードと会話から学ぶことができるんよね。
https://anond.hatelabo.jp/20230919002911
これに書いてあることは本当。なぜなら自分がその体験をしている。
そしてPythonもSQLもJavaScriptじゃなくて大丈夫。VBAできればもうどの事務職でもやっていける。
ただし田舎。
たまーに増田でも見かけるが、地方では信じられない位アナログな方法でエクセルを使っている会社がある。
弊社ではエクセルファイルAのセルの合計値をコピーして、別の10個のエクセルファイルの決まったセルにコピーする仕事がある。
自分はこれをAにボタンを設置し押すだけで他のファイルにコピーされる様にして、社長含め他の社員に見せた。
途端にビルゲイツ扱いである(社員A(老人)は私をゲイツと呼ぶようになった)。
その結果。ほぼ全ての事務が自分に回ってくるようになった。ゴミ屋敷の様なエクセルファイルをシンプルにまとめるのに2か月かかったが、
これは自分が文系で能力が低い為で、ある程度プログラミングできる人ならもっと早くまとめられているはず。
おかげで仕事中に余裕ができまくりで、会社のSNSも作り、事務とは別に色々やらせてもらえるようになった。
・40歳
・VBAベーシック(35歳の時に取得。つかこれは別になくもていい)
以上。
こんなんでも生きていけるから、あまり後ろ向きにならない方がいいよ。
https://anond.hatelabo.jp/20230917223337
新卒で入ってのアラフォー事務職だけど、そんなポジションやってるわ。
ちょい前は関数とVBAさえできていればよかったのに、WEBもよく使うようになり、最近はoffice scriptばかりになった。
java scriptいけるならと、ついでみたいにKotlinもさせられて業務端末に簡易的なアプリ入れてる。
だんだん高度になってくるといつか惨事にならないかと心配で本職雇ってほしいのだけど、希少性のある今の地位もなかなかよくて困りどころや。
現在、中小企業でアルバイトしているものです。現在の仕事内容経験に対して、待遇は適正でないように感じ辞めたいです。
仕事内容:パワポ作成、請求書データベース管理、VBAでの社内システムのメンテナンス、pc関連の雑用全般。HPの管理。
不登校の子供と小さい子供がいるためもう辞めたいが、自分が不完全な社内システムを作ったせいで(その罪悪感もあり)辞めるに辞められない。自分以外の社員は全員pc知識が全くありません。大変小さい会社です。新しい人間を雇ってくれと言っても人が集まらないと言われました。どうしたら辞められるでしょうか?
ChatGPTに日本語で命令したら秒で作ってくれるのでVBAやGAS書く能力は不要になったんだが。「A1からI9に数独の初期値入れてあるシートの残りのマス埋めるVBAマクロ作って」の一言で数独解くの作ってくれるぞ
ChatGPTが補足している通りロジックは基本しか使っていないので初期値から最終形までに仮定して入れる局面があるものは解けないし非効率ではあるものの初級は解けるし遅いPCでも一瞬で終わる。必要なのは入力の形と欲しい出力を日本語にする能力とHello World実行できるレベルの知識。コード読んでデバッグできる能力があればなおよいがGPTに教えてもらえばいいし、今業務やってる派遣の人に動作確認してもらって不満なところをAIに修正させればよいので業務をよく分かっている社員にやらせたほうが会社としてはいい戦略。
A1からI9に数独の初期値入れてあるシートの残りのマス埋めるVBAマクロ作って
数独を解くためのVBAマクロを作成するのは複雑ですが、以下は一つの例です。このマクロはシートのA1からI9の範囲の数独を解きます。
Function IsPossible(y, x, n, grid) As Boolean Dim i As Integer Dim j As Integer ' 同じ行や列にnが既にあるか確認 For i = 1 To 9 If grid(y, i) = n Or grid(i, x) = n Then IsPossible = False Exit Function End If Next i ' 3x3のボックス内にnが既にあるか確認 Dim x0 As Integer: x0 = ((x - 1) ¥ 3) * 3 Dim y0 As Integer: y0 = ((y - 1) ¥ 3) * 3 For i = 0 To 2 For j = 0 To 2 If grid(y0 + i + 1, x0 + j + 1) = n Then IsPossible = False Exit Function End If Next j Next i IsPossible = True End Function Sub SolveSudoku() Dim grid(1 To 9, 1 To 9) As Integer Dim i As Integer Dim j As Integer ' グリッドをシートから読み込む For i = 1 To 9 For j = 1 To 9 grid(i, j) = Cells(i, j).Value Next j Next i If Solve(grid) Then ' 解をシートに書き出す For i = 1 To 9 For j = 1 To 9 Cells(i, j).Value = grid(i, j) Next j Next i Else MsgBox "解けませんでした" End If End Sub Function Solve(ByRef grid) As Boolean Dim i As Integer Dim j As Integer Dim n As Integer For i = 1 To 9 For j = 1 To 9 If grid(i, j) = 0 Then For n = 1 To 9 If IsPossible(i, j, n, grid) Then grid(i, j) = n If Solve(grid) Then Solve = True Exit Function End If grid(i, j) = 0 End If Next n Solve = False Exit Function End If Next j Next i Solve = True End Function
このコードをVBAのモジュールに追加して、シートに数独の初期値を入力してからSolveSudokuマクロを実行すると、マスを埋めることができます。
ただし、このコードは基本的なバックトラック法を使用しており、非常に複雑な数独には効率的ではない場合があります。より高速な解法や最適化を求める場合は、追加の手法やアプローチが必要です。
https://si-coding.net/sudoku4.html
2 3 5 7 8 3 3 4 5 1 6 6 1 2 4 4 9 8 2 2 5 1 3 9 4 6 1 4 1 2 6
1 6 9 2 3 5 8 4 7 4 5 8 1 6 7 9 3 2 3 2 7 9 8 4 5 1 6 5 3 6 7 1 2 4 9 8 7 1 4 3 9 8 6 2 5 9 8 2 5 4 6 1 7 3 6 9 1 8 2 3 7 5 4 2 4 5 6 7 9 3 8 1 8 7 3 4 5 1 2 6 9
Excelはマクロ/VBA/処理自動化なんかを扱った本がたくさん出版されてるので、職場が物理書籍持ち込みOKなら特に悩む必要ないと思う
情報が断片化されたりコンテキストが抜けてたりゴミみたなコピペ記事ばかりなネットの情報より良い場合もある
・マイクロソフトオフィス/ウィルスバスター/エッジ以外のソフトは使用禁止
この条件でマクロ作らんとならん。
こういう時になんか効率的な順序ある?
子供の頃BASIC言語でちょっと遊んだから原理そのものは漠然と分かる。
他人が作ったマクロ開いてコピペで機能追加したり二重で処理してる所見つけて早くしたりぐらいは出来る。
流石はてなーだ。
はてなーも質が落ちたと言うが、こういう分野ならまだまだいい感じやね。
②必要な作業を整理して、それだけを出来るようにメモを作り印刷する。
③記録ボタンを押して、印刷したメモを見ながら作業をし、記録完了する。
⑥ググって一通り解説を見て、求めている解説のタイプを把握する。
⑦本屋やKindleで求めているタイプの解説が載っている本を買う。
⑪持ち込んだ紙を見ながら職場のマクロを改修する(この辺雑誌見ながらBASICのゲーム作るアレじゃねえか。令和に何やろうとしてんだろ俺)。
⑫改修版のマクロを動かしてみる。
⑬不満点やバグを洗い出して家に帰ってまた調べる。
⑭満足するまで⑫と⑬をループ。
って感じかあ。
うんこれで良さそうね。
あとは中古のPC買うかWEBのOfficeで代用できるか最新の365でもある程度再現出来るのか調べてみて家でPTSDサイクル作れるようにしたらモアベターかね。
職場(ネット環境なし)でトライ&エラーはしたいから逆引き辞典みたいのはやっぱ欲しい気はするが。
でもウチの職場でVBA本読むのも自分のスマホで調べ物するのも周囲からの白い目はあんま変わらなそうな気がするんよね……。
職場辞めろについてはマジでその通りなんだけど、今の「Excelでマクロを作るだって?そんなの出来るわけねえぜ!俺たち方眼紙魔術師がマクロに手を出したら神罰が下るぞ?」なしょっぼーい環境に慣れちゃってるから他所で上手くやれる自信がないのよね。
じゃあこの会社潰れたらどうすんのって話ではあるんだけどねえ。
どうするんだろうね。
こんな使えないオッチャンになっちゃってねえ。
アハハ(ちいかわっぽい感じで