hack のためのネタ帳, etc,,,

マークシートの処理を Excel でやろうとしたんだが、
標準の関数だけではいろいろ出来ない事多くて閉口してしまった。
マクロ使えばどうにでもなるんだけど、マクロなしだとここまで低機能とは…
Excel 辛い orz

セル範囲指定で文字連結

CONCATENATE 関数 がセル範囲指定を解さない。
2016 からは CONCAT 関数TEXTJOIN 関数 が使えるらしいが Office 365 限定

Office 365 契約してないと、範囲中の全セルを展開して、CONCATENATE 関数または文字列連結演算子 & にすべて渡す以外に方法がない模様。
え!?ダサ過ぎでしょ?これは?
何?この地獄???

ワークシート名が取得できない

保存済みのファイルであれば、CELL 関数FIND 関数MID 関数 を用いて、
=MID(CELL("filename",Sheet1!A1),FIND("]",CELL("filename",Sheet1!A1))+1,31)
なんて方法は取れるには取れる。
ただし、新規作成して未保存状態のワークブックだと CELL("filename", ...) は空白が返って来るのでまともに動かない。
CELL("sheetname", ...) みたいなのがないってのが、かなり謎だわ。

しかし CELL("filename", Sheet1!A1) を 2 回も呼ぶのは余りにもダサ過ぎる。
因みに MID 関数の第 3 パラメータに与えている 31 は、少なくとも 2016 だとワークシート名に 31 文字制限かかっているので、そのマジックナンバー。

二進法への変換が最大10桁(うち符号1桁)までしか出来ない。

DEC2BIN 関数 がまた酷い。
符号込みで 10 ビット、値域にして [-512:511] でないとエラーになる。
えぇぇぇ?どういう手抜き???

ビット演算

一応、
で一通りは可能なんだけど、C 言語なんかの ~, &, |, ^, <<, >> みたいな演算子に慣れていると地味に辛い。
メンタルやられそう orz

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます