はてなキーワード: excelとは
DB直じゃなくてPowerBIのセマンティックモデルとしてAzureADと紐付いた認証認可付きでデータ公開してExcelからPowerQueryとかで接続するのが今時じゃないかな。
他人のことは放っておけ
手作業頑張った感が出る中間ファイル生成させるとかやって、空いた時間で勉強するんやぞ
ExcelVBAの後にどうせだから他のVBAもやっとくかと遊んでたら、OutlookVBAで名前空間と出会って衝撃的だった
会社から365移行するとか言われたんでOfficeScript触って連想配列とかいう素晴らしいものと出会った
GraphAPI使って、メールも含めて仕事してるフリが出来るようになってだいぶ満足感出てきた
さぁ次は何しようかなー
VBA嫌いのExcel師(営業事務)なんだけど、その程度のことをVBAでやろうとするヤツを駆逐したい。
お前は営業や他のユーザーの理解度を自分レベルだと勘違いするのをやめるべき。
うちの会社はVLOOKUP(最近はINDEXとMATCH)組めるのが「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週間待たされたりする。
営業に金稼がせるためには営業の利便性と裁量は必須で、Excel利用者に裁量権が認められてないVBAのツールなんか全体最適化されてないクソ。
※なお裁量大きいからってあんまり好き勝手するとやらかした時に他の助けも得られず(やれることに限界がある)自滅ルート
自分も軽くVBA習得してるんだけど、フォルダ内のデータ一括読み込みとシートの分割統合の関数代わりにしか使ってない。しかもただの効率化なのでVBAが死んだところで手作業に戻せる範囲。
他人が保守できるように作るのならVBAなんか入れるべきではないし、VBA入れないなら計算シートは必須。あと計算周りを大掛かりにやるならSaaS入れてDX検討すべき。
原則関数とピボットテーブルのみで完結させ、マクロは使わない。ってのが良いと思う。
DBからデータぶっこ抜いたり(今のご時世は出来ないと思うが)、外部ファイルを読み込むとかしないで、ブック内のデータを処理するだけならマクロいらんやろ。
数十万以上のデータ件数になるとさすがにきついけど、そうでもなければ関数駆使すればだいたいいける。
てか、Excelはお絵かきソフトであって、表計算として使うんならGoogle Spreadsheetの方が絶対に良いわ。
EXCEL原理主義からするとマクロを入れる時点でワークシート関数は入れない。
複数行コピペでやりたい時だけ、入力用の空シートにするけど、それだったらCSVのファイル連携。
1ファイルを配列に突っ込むのはメモリが怖いのでやらない。今ならほぼ大丈夫だと思うけど、ストリームで処理する呪いにかかってる。
商品マスタとか参照するときに、外部データ範囲でDBからマスタをシートに張り付けて使う。1万件ぐらいまでならデータをADOとかで取ってdictionaryに入れて検索するより、シートからVLOOKUPで取るほうがよっぽど早い。
この日記の内容は、会社の後輩から「最近エクセルマクロを勉強し始めて(キラキラ)」という話を聞いて、先輩ムーブをかますために話した内容になります。
とにかくこれから説明する「計算用シート」が憎くて憎くてたまらず、ちょっと引かれるほど熱弁してしまいました。
ただ、他の方がどうされているのかや、逆に「計算用シート」を愛用する方の意見も聞きたくなり、増田に書いてみました。
エクセルマクロのお作法とか書きましたが、要するにエクセルマクロで「計算用シート」って色々な意味でよくないよね、という話をしたいです。
3行でまとめます。
〇 エクセルシートはユーザーインターフェース(インプット)か出力結果(アウトプット)のためのものとすべき
〇 データ加工をする場合には、原則配列や辞書型配列(連想配列)に格納して加工を行い、最後の結果だけシートに出力するべき
〇 何事にも例外はある。
エクセルマクロにも色々あると思いますが、今回は下記を想定します。
日付や人物名などを入力し、データベースや別のエクセルファイル、別のシートから取得したデータを入力された値を基に加工し、加工後のデータをシートに出力する
この場合、入力欄があり編集可能なシートがユーザーインターフェース、最終的に加工されたデータが出力されるシートが出力結果です。
(もちろん、ユーザーインターフェースの別の欄(セル)に出力する場合もあるし、その場合はユーザーインターフェースと出力結果が一体のものとみなします。)
また、データ用シートは同じエクセルファイル内に基となるデータが含まれる場合を想定します。
(これ自体が非推奨で、SQLデータベースかせめてAccessを使え、という意見はありますがそれは別にして…)
ではここで定義する計算用シートとはなにかというと、文字通り計算を行うためのシートです。
1.元となるcsvファイルをエクセルに読み出してシートに格納
2.そのデータは日付が数値型になっているので、日付(数値型)の入った列を文字列に変換した日付(文字列型)列を新たに作成
これは極端な例ですが、とにかく変数や配列を定義せず(あるいはエクセルのセルオブジェクトを変数のように扱い)、エクセルに値を入力し、それを直接加工することで目的となるデータ加工をしたり、様々な処理をします。
なんかこんな感じの処理をしているエクセルマクロ、どこの会社でも腐るほどあるんじゃないでしょうか。
ある程度マクロに慣れた気の利く人なら、このシートはロックや非表示にして、ユーザーから触れないようにするでしょう。
・・・これ、やめたほうが良くないですか?。
ある程度詳しい人なら同意してくれると思いますが、このやり方でダメな理由はいっぱいあります。
後で説明する配列や辞書型配列(連想配列)と比べると格段に処理が遅いです。
ちょっと詳しい人が知っている「画面更新の非表示」を駆使しても、配列を使った処理からみれば止まったハエです。
いったんエクセルシートにデータを格納して加工しているので、コードとエクセルシートを両方見る必要があり、とても読みにくいです。
変数として命名されていないのも致命的で、処理の意図が余計に分からなくなります。
計算用シートを事前に用意して、別のセルに関数を格納しておき、マクロと関数を使ってデータ加工をするものも見たことがあります。
あまり知られていませんが、セルの最大文字数は32,767 文字です。
セルの最大文字数を超えると自動的に隣のセルに値が入り、シートが滅茶苦茶になります。
他にもエクセルの数値を丸める自動変換の仕様とか文字列→日付の自動変換とか、いくつものバグに苦しめられます。
できる人だと、いちいち最大文字数が多い場合の処理を書いたり自動変換機能を殺したりしてくれますが、そんなことに手間をかけているから日本のGDPは上がらないんだと思います。
他にも、データが大きくなると処理が重くなり不安定になる、計算用シートを人が触ってしまうリスクがある、などいくらでも理由は上げられます。
(逆に利点は、目の前でガチャガチャ動いてスーパーハッカーになった気分になれるくらいしか思いつかない・・・)
配列を使いましょう。
配列とは何ぞや、という人はググってください。
配列にデータを入れて、データ加工は配列や変数に対して行い、一番最後の出力だけセルに値を格納する。
個人的にオススメしたいのは辞書型配列(連想配列)で、うまく使うとデータの管理が簡単になり、処理も爆速になります。
(参考)【VBA】大量データから高速で値を検索【Dictionaryを使う】
csvファイルもなまじエクセルで開けるだけに別のブックやシートで開きがちですが、これは悪魔のささやきです。
直接ファイルを読み出してLine InputやSplitで配列に格納しましょう。
エクセルとして開くやり方はコード書くのは簡単でも、実行時間に天と地ほどの差が出ます。エクセル開くと処理もめちゃ不安定です。
(参考)Excel VBAでCSVオープンするときのパフォーマンス比較
いや、冒頭のマクロを書く人の気持ちも分かるつもりです。自分もコードを書き始めたころは全部シート上で操作していました。
冒頭のマクロのほうが直感的なんですよね。自分が手で書くことをマクロにやらせる、というマクロ本来の趣旨にはあっていますし。
途中の計算過程もすべて目の前で展開されるから分かりやすいです。
ただ、それではダメなんです。。。処理は遅いし挙動は不安定だし後で改修・保守する人が死にます。
あと、エクセルシートやセルは当然エクセルにしかないので、エクセルマクロ(VBA)から他の言語に移れなくなります。
自分もエクセルマクロの里の出なので、計算用シート脱却には苦労しましたが、苦労して会得した配列や辞書型配列(連想配列)のスキルはそのまま他の言語に活かすことができました。
配列の中身を見る方法は別にある(ローカルウィンドウやDebug.printを使うなど)ので、リハビリに取り組んでほしいです。
(参考)VBA デバッグの仕方
計算用シートを許容できる、使うべきケースもあると思います。。
個人的には、
(最後のは、なんでも自分で確認しないと気が済まない上司の発注で、意味不明と思いましたしたがしぶしぶやりました。)
この場合、インプットのエクセルシートに直接加工するのは論外なので、計算用(加工用)のシートを用意してそこで操作を行うことは必要だと思います。
他にも、こういうときは「計算用シート」があったほうが良い、という状況があれば教えてもらえると嬉しいです。
そもそもツッコミとして、「データ加工するならエクセルマクロを使わずにpythonとかRとかもっとまともな言語使えよ」という言葉が来そうな気がします。
ただ、個人的にはエクセルマクロ(VBA)は大好きですし、初心者にもおすすめしたいです。
自分のような非エンジニアだと、セキュリティの関係などでPythonの開発環境とかすごく用意しにくいんですよね。
(あと、コマンドプロンプトの真っ黒な画面が怖かった)
その点エクセルマクロは、開発環境の用意はプロパティでチェック項目を一つオンにするだけだし、入門書がたくさんあるし、セルの挙動を追えば視覚的にプログラムを理解できるし、初心者に優しいです。
(そのやさしさが上述したとおり悪魔の罠なわけですが。)
最初は計算用シートに頼ってでもエクセルマクロからプログラミングを始めて、本格的なデータ加工をし始めたあたりで計算用シートという諸悪の根源から脱却する。
さらに本格的なデータ処理を行うために、PythonやRなど別の言語を習得したり、エクセルからSQLデータベースやACCESSなどに切り替えていく、というプロセスがいいのではと個人的に思います。
冠婚葬祭以外でスーツもろくに着たことのない人間が、まともな職業に転職することは可能ですか?
画面の幅を狭くするとどっかで崩れるみたい。Android ChoromeでもPC Firefoxでも再現する。
スペース入れたり直してみたけど駄目だわ。揃えると今度は違う壊れ方をする。
はてな記法じゃなくてExcelペーストでHTMLにしてもらうやつ使ってるせいかもしれないけど。
注記だけ入れるわ。
テンキーのブラインドタッチ
→ 経理のおばちゃんが異常な速度で撃ってるが、あれほどではないがカタカタという感じで見ないで撃てるのは昔苦労してやっといて良かった。
スマホのフリック入力
→ 娘が10歳くらいの時に教えてくれた。最近テレビで「おじさんは返信が遅い」ってやってて、原因はローマ字入力だかららしい。今からでも遅くないからフリックはやっとけ。
MOSのスタンダード資格
→ ほんとうに最低限だが、Excelの関数とかWordの書式とかで「こうしたい」と思ったときにググることができている。MOSを取っていなかったらググるキーワードすら出てきていないと思う。
基本的に女性が得意とする分野な気がするので、身近にPCに強い人がいたら聞いてみるといいと思う。自分の場合は同僚のおばちゃんと娘が先生になってくれた。
今仕事でよくExcel VBA使ったツール作ってるんだけど、これがまためちゃくちゃ楽しくて、もっと出来ることを増やしたい
でもVBAは属人性高いからあんまり良くないよね、という話も聞く(たしかに、今のところ全部自分用のツールとして作っているから上手くいっているけど、他人に渡したときに想定していない動きをするのがかなり怖い)
このレベルの人間が次に勉強すべきところってどのへんなんだろう?そして、どんな仕事ができるんだろう?
やっぱりPythonとかなのかな……学ぼうとして一度挫折しているから重く感じてしまうんだよな……どう勉強したらいいのかもわからないし……
PowerQuery?とかPower BI?とかもよく聞くし気になるけど、仕事で使える場面あるだろうか……
結局仕事でやらなきゃいけないことがある→楽に処理したい→楽するためにツール作る、みたいな流れが一番楽しいし身になるんだよな……
↓追記
すごく今更だけどトラバがいくつかついてた。
でも、本気で悩んでいるようでいて、実際はべつにそうでもなくて、正直言って自分でよくわからない
よくわからないことが、なんか空しい、それだけはわかる、とりあえずそういう状態
たとえば資格
世間一般に難関資格とされるものを必死こいて取得したはいいけれど、
一応必要とされる業界に身を置いてはいるものの、だからといって転職して給料アップまでは気力が保たない
確実に今よりは待遇もよくなることは、理性的に考えれば分かるんだけど、
資格勉強していたときの、目標に向かって突き進む集中力の爆発がなくて、ただただやる気が出てこない
資格は持っていないが、とりあえず意味もなくPython、PHP、JavaScriptは一通り使えて、
WEBアプリの開発もいくつか個人で適当に作ってみては、ドメインの有効期限が切れたらそのまま消え去るを繰り返している
流行りに乗ってAI関連も少しいじってはみていて、ローカルで特化した文書生成用ぐらいは用意できる
Excelはとりあえず関数、ピボットテーブル、VBAぐらいは使えて、仕事はそれだけでほぼほぼ自動化してしまっている状態
Photoshop、Illustrator、Jw_cad、AutoCADなら、なんか使えます
たとえば英語
気付いたときには、英検一級からTOEIC満点、TOEFL満点まで取ってしまった
最近はスピーキングの練習として、ChatGPTに大変お世話になっている
意味もないのに、主にビジネス向けのシチュエーションを想定して、スピーキングの練習を無心で繰り返している状態
でも、外資系にいけば、他の資格や実務の経験等を合わせても、客観的に見てもおそらくまあまあの希少人材ではあるんだと思う
だけど、いくら待てど暮らせど、その気には一切なってくれない
長々と書いてしまったけれど、たぶん上を目指すべきなのに、その気になれないのが自分でもよくわからない
結局、すべてなにか明確な目的があって始めたことではないので、それを駆使してのし上がってやるぜ的な情熱がない
どうすればそれを得ることができるのか、それがわからない
自分は、なにか強力な推進力がないと前に進めない人間で、それがどうやって生まれるのか自分でもよくわからないまま、この歳まで生きてきてしまった
まだ転職が難しい年齢とまではいえないけど、何のために転職するのか、明確な理由が欲しい
転職転職言っているけど、べつに転職したいわけではなくて、ただ世間一般的に考えて、収入を上げて社会的なステータスを向上させることが正しい方向だとは思うので、そう言ってるだけではある
他になにか、それぞれのスキルの意義ある使い道があって、それに自分の気がちゃんと向いてくれるのならば、べつになんだっていいのだ
もうよくわかんない
どうすればいいですか
なにがしたいのが自分でもわかりません
おっさんずらぶを初めて見た。前のシーズンは見ておらず、今回のシーズンも数話見逃して、ど真ん中の話をみている。
おっさんとらぶしてなくて驚いた。最初の展開がわからなさ過ぎて、おっさんが何ポジションかわからなかったが重々片思いなことはわかった。
(この文字列はアニメ日常の曲を思い出す。オモオモ☆カタオモイ。)
ただドラマ見てTwitterをいじるだけだったので、感想を記述していこうと思う。読書感想文ならぬドラマおっさんずらぶ感想文。いや圧倒的中身のなさと文字数の少なさで再提出する未来が見えるな。以下感想。
・ドラマを見ていると、だんだん田中圭が可愛らしく見えてくる。まだ15分程度しか見ていないのに。なぜなのか。立ち振る舞いと作中での周りからの評価のおかげだろうか。
しかし、途中にちびまる子ちゃん的展開があり、恐怖しかない。鬱恋愛ドラマなのか?いや、そもそも恋愛ドラマがそのような〈試練→乗り越える→雨降って地固まるのように、より強固な絆につながる〉という形になっているから、仕方ないのか。いや、この展開は少年漫画も一緒だ。
・みんな熱いパッションがあってとても羨ましい。恋愛感情羨ましい。私も何かに執着したい。以前はゲームにはまったが、しっかり飽きた。次は何にはまろうかな。Excelマスターとかが良いんじゃないかと睨んでいる。
それにしても皆様笑顔が素敵である。幸せそうだね。みんな笑顔で幸せになってね、という気持ちになってくる。私の日々にはない種類の幸せを鑑賞している。
【その他】
・立ち振る舞いについては、かわいいとかっこいいは作れるね。やっぱり。と思った。アイドルのランキングや、夜の仕事の方々のランキングを見ると、正直私には刺さらないなーって思う方々がトップを取っていることもある。
それは、私が世間と好きな系統がずれているということでもあるかもしれないが、顔だけでなく中身勝負な部分も大きいからだと思っている。相手に「また会いたい!すき!素敵!」と思ってもらえるような対応って作れるんだよね。私も過去を思い出してみれば、つれない態度と甘い態度を交互に取られると執着的感情が芽生える。誰かに頼んでみようかな。
・周囲からの評価については、私は周囲からの評価を気にする、八方美人人間であるため、周りからの評価が高いとそれだけ信用もしてしまう。単純ミーハー。私の心の中にキリスト様等神様がいれば自分の心に問いかければ済むものを。それにしてもはるたんモテるな。
2023年8月10日に5歳の息子に誘われて始めたポケモンGO
ようやくPL40に到達した。
最強トレーナーの皆様からすればまだまだとお叱りを受けるでしょうが
オートキャッチ無し、ほぼ無課金(ウソ)でここまで来たことをご報告致します。的な
本題はそれではない
孵化アクセスはギフトの枠が増える、そしてギフトはPL上げに効率が良いとの判断
現在フレンド数は大親友到達を除き100人前後で回している、大親友到達は12人
フレンドはレイド招待で増やしている、あっちから来ることもありほぼ承認
フレンドレベルを上げるには双方どちらかがギフトを開封しなきゃならないよね、
(レイド参加すると偶発的に既フレンドと重なり親密度進行することもあるが例外として無視する)
で、悩んでいるのはどっちが開けるの問題
フレンドリストではどちらかが開封済みなら水色の枠で判別できる
俺の基本運用は、毎日0時を過ぎたタイミングで届いているギフトを全部開ける
稀に、こちらで開封済みで親密度進行しているのにあちらでも開封する人がいるが
で、だ、結局フレンドの状況や運用は人によって千差万別なわけだ
つまりフレンドをほとんど登録していない、積極的に使って無い人も大勢いるだろう
そういう人は開封枠なんて気にせずにギフトが届いていたら機械的に開けているはずだ
で、機械的にお返し
ではでは、相手方をプロファイリングして、こいつは送る一方で良かろう、
みたいな判別を緻密にすればギフトの運用効率はさらに上がるんじゃないか
ポケモンGOからデータを抜いてExcelで管理できれば自動化と可視化できるのだけど、それに必要なAPIは公開はされてない
フレンドリストの画像からテキスト化してデータ化、これはさすがに手間もかかるし技術的制約も大きい。
どーすりゃいいの?
さすがにこの人数は覚えられない
なお、大親友到達のタイミングはしあわせタマゴを考慮して相手様に委ねている
俺はガチ勢ではないのでどうぞそちらでお楽しみくださいです
とはいえ、こいつ分かってねぇ奴判定してる人はもったいないのでこちらで使わせて貰っている。
この辺のノウハウや作法はググれば先人の知見にたどり着くのだろうが
俺はあえてググらない
だからここで聞く
みんなどうしてる?
Excelの改良ができる人なの?