Excelで数値先頭のゼロを削除しないオプションをテスト中 99
ストーリー by nagazou
よくあるやつ 部門より
よくあるやつ 部門より
窓の杜の記事によると、現在、Microsoft 365 Insider上では、「先頭のゼロを削除しない」オプションがテストされているという。これは電話番号や商品コードなど、ゼロから始まるデータをExcel内に入力すると「数値」として扱われてしまい、冒頭のゼロが勝手に消されてしまうという意見から来たもののようだ。実際の業務では冒頭のゼロが削除されると意味が変わってしまうこともあり、余計なお世話と感じることもある(窓の杜)。
テスト中の仕様では、市区町村コードのCSVファイルを「Excel」で読み込むと、「先頭のゼロを削除する」というデータ変換を行うかどうかを問うダイアログが表示される。[変換しない]ボタンを選択するとゼロから始まる数値データは文字列として扱われるという。
テスト中の仕様では、市区町村コードのCSVファイルを「Excel」で読み込むと、「先頭のゼロを削除する」というデータ変換を行うかどうかを問うダイアログが表示される。[変換しない]ボタンを選択するとゼロから始まる数値データは文字列として扱われるという。
Excelはデータベースソフトではない (スコア:5, すばらしい洞察)
その需要の大半はそもそもExcelでおこなうべきではない作業によるものではなかろうか。
(そのオプションの実装は)ありがたいけどね。
Re:Excelはデータベースソフトではない (スコア:3)
万能ツール(DTPとかワープロ)用途以外の、本来の表計算ソフトとして使う場合でも、勝手に0を除外されると都合が悪いケースありますよ。
顧客コードと売上集計表みたいなケースで、顧客コードの0が消えてしまって「ムキキー!」となりながらセルに文字列設定しにいく、みたいな。
Re:Excelはデータベースソフトではない (スコア:1)
>万能ツール(DTPとかワープロ)用途以外の、本来の表計算ソフトとして使う場合でも、勝手に0を除外されると都合が悪いケースありますよ。
あらかじめ、セルかカラムの表示形式を「文字列」に指定すれば良いんでしたっけ。
あるいは入力時頭にシングルクォーテーションを追加するか。
#どっちもめんどくさいけど、必要な時はやってた
メールアドレスがリンクにされていて、頭に "mailto:"入れられてたときは混乱した
#Outlookだったかもしれない
Re: (スコア:0)
そうやって文字列にすると今度は数値が文字列になっています!って警告が出るんですよね。
Re:Excelはデータベースソフトではない (スコア:1)
そうそう、それもうっとうしいですね
まとめて無視指示するか、放置するか
Re: (スコア:0)
元がCSVでファイルを開く場合、そもそも「セルかカラムの表示形式を「文字列」に指定」自体ができない。
拡張子がテキストのファイルを読み込む場合、ダイアログで区切り文字指定と各カラムの表示形式指定ができるが、
拡張子がCSVの場合、ダイアログすっ飛ばしてそのまま標準で読み込む。
しかもコードの先頭0削除だけでなくいらない、余計なやってはいけない変換を山盛りやってくれる。
#例えば住所で町名と番地が湧かれて 小川町,10-1-1 とかなってたら、10-1-1を勝手に日付として2010/1/1にしてくれる。
Re:Excelはデータベースソフトではない (スコア:1)
測定器の吐き出す桁数の多いデータのCSV読み込むと指数表示にされるのもかなり困る。
Re:Excelはデータベースソフトではない (スコア:1)
列名で、
"数値列"(I) = IntegerのI
"文字列"(S) = StringのS
とか指定できればいいのにね。
Re: (スコア:0)
>元がCSVでファイルを開く場合、そもそも「セルかカラムの表示形式を「文字列」に指定」自体ができない。
Excelだけしか使ってはいけない縛りのある世界だと厳しそうですね
Re: (スコア:0)
一旦メモ帳などで開いて全選択コピーしてシートに貼り付けというのはどうなんでしたっけ
Re: (スコア:0)
'0123
みたいに入れてた記憶が
Re:Excelはデータベースソフトではない (スコア:1)
巨大なデータベースをExcelで作るとかは論外だけど、
Excelのテーブル機能で済むぐらいのことならExcelでやっちゃった方が効率的でしょ。
Re: (スコア:0)
ツールがEXCELしかない職場のことも考えてください!!
Re: (スコア:0)
>ツールがEXCELしかない職場のことも考えてください!!
そういう職場ではExcel職人が育つことがありますよね
そして神Excelが量産されたり
Re:Excelはデータベースソフトではない (スコア:1)
まあ、RDBMS 製品つかう理由の重大な部分はインデックスとトランザクションだから、それがなくていいなら手軽に作れそうです。
入力したまま取り込んで欲しい (スコア:1)
ファイルを読み込んだだけで自動的に訂正されちゃうのはやっぱり困るよね。
元のデータが0始まりのデータなら、Excelに取り込んでも0始まりのデータとして扱って欲しい。
列を文字列設定してから全体コピー&ペーストとか面倒だし……。
Re:入力したまま取り込んで欲しい (スコア:1)
ファイルを読み込んだだけで自動的に訂正されちゃうのはやっぱり困るよね。
LibreOfficeのCalcのようにCSVから開くときは列書式聞いてくるのが助かるよねぇ
# 基本的に自動判別やサジェストは誤爆前提で使い物にならないからねぇ
Re: (スコア:0)
基本CSVはテキストエディタで開いてるけどEXCELで開く必要あるときは拡張子をTXTに直してから開いたりしてるな。
Re:入力したまま取り込んで欲しい (スコア:1)
>基本CSVはテキストエディタで開いてるけどEXCELで開く必要あるときは拡張子をTXTに直してから開いたりしてるな。
最近はテキストエディタでcsv開いて全copy
Excelで貼り付けしたら前回指定のデリミタでカラムに分けてくれるのが有り難い
Re: (スコア:0)
> 元のデータが0始まりのデータなら、Excelに取り込んでも0始まりのデータとして扱って欲しい。
ちなみに "0" + "0" の結果はどうなってほしいの? "0" それとも "00" ?
Re: (スコア:0)
別ACですが
"0" + "0" = "00"
0 + 0 = 0
なのでは?
Re: (スコア:0)
>ちなみに "0" + "0" の結果はどうなってほしいの? "0" それとも "00" ?
"0" + "0" じゃね?
Re: (スコア:0)
Excelの式なら、"0" + "0"は数値演算となり、結果は0。
文字列の結合なら"0" & "0"と書かねばならず、結果は"00"。
え? 冗談だろ? (スコア:1)
0始まりは8進数として扱ってもらわないと困る
Re:え? 冗談だろ? (スコア:2, おもしろおかしい)
島村ジョー「…」
Re: (スコア:0)
bashで計算が時々エラーになるのなんだろと調べたら、0始まりは8進数解釈されるからだった。年月日とか0始まりの10進数が出てくるのは結構あるのに、いちいち10#とか頭につけてから計算しないといけないらしい。めんどくさいの。誰だよ0始まりは8進数とか言い出した奴は。センスないな。
Re: (スコア:0)
C言語まで遡るのかな?
とすると、Dennis M. RitchieまたはBrian W. KernighanとDennis M. Ritchieになるね
Re:え? 冗談だろ? (スコア:1)
逆の可能性もあるけど、B言語の時点で0始まり [bell-labs.com]なので、もっと古そう。
PDPのアセンブラ由来とかの可能性も有るのかな。
Re: (スコア:0)
だって、OctetのOと0似てるし、入力が楽じゃん!
某有名サービスのCSV出力 (スコア:1)
少し前に仕様変更があって、テキストエディタで開いたらやたらダブルクォーテーションが多い見慣れない形になっていた。
イメージはこんな感じ。
『"=""2023/06/08""","=""0123""","=""1-2-3"""』
これをエクセルで開くと『="2023/6/8"』『="0123"』『="1-2-3"』という式がセルの内容になって、
エクセルの余計なお世話にも負けず、元通りの内容で表示してくれるイカス仕様。
タイトル行まで含めてすべてをこの形式で出力する発想力に絶句したぜ。
(TVCMもバシバシ流してるあのサービスだよ)
Re: (スコア:0)
それはそれでエクセルで読み込む分には正しい「表示」にはなるだろうけど、
「データ」としては正しくないからエクセル以外のシステムでは読み込みエラーにならんか?
エラーにならなくても、それこそ本来の住所は「1-1-1」なのが
エクセルでは「1-1-1」と表示されても他のデータベースとかに読み込ませると「=”1-1-1”」って住所になってしまわんか?
古の (スコア:1)
K3フォーマットは良かった。
””でくくれば文字列、それ以外は生データ、とシンプルだった。
# SlashDot Light [takeash.net] やってます。
ぶっちゃけ (スコア:0)
基本は文字列扱いとしてほしいな
数値としての判断は関数側で何としてLOOKUPするかを指定する感じで
/*
表”計算”とはいったい、、、って話だけれど
それこそAI判定してくれよとは思わなくもない
まぁkAIlくん並みに余計なお世話誤判定になるんだろうけど
*/
Re:ぶっちゃけ (スコア:1)
そうだよねぇ。
0から始まる文字列だけとか、あとから書き換えるとき結局困るやん
今更変えても混乱するだけだから、もう何もしなくていいのに・・・
社員番号ゼロから始まるので、いろいろ不具合に苦しめられてきたんだよなぁ。
若い人の番号はゼロから始まらないようになってるし
Re:ぶっちゃけ (スコア:1)
C言語標準ライブラリの、struct tm tm_year は、
元々は「西暦年の下二桁」を格納するものでしたが、
2000年問題対応にあたって、「西暦1900年からの年数」を格納するものに
仕様変更されました。今年はtm_year=123。
perlなどのスクリプト言語でも、このライブラリをそのままラップしてるので同仕様で、
そのため
うち捨てられた20世紀のインターネット掲示板CGIとかで、
「19」という文字列の後にtm_yearを表示してたために、
2000年に入って「19100年」表記してたりするのをおく見かけたものです。
Re:ぶっちゃけ (スコア:1)
> 「桁数を増やせばいいよ」ということで、最初の3桁を西暦の下3桁にするように改修 →
> 「あれ、やっぱり並ばないじゃん!!!」 →
これ改修する前に気づかないのはヤバい。
Re: (スコア:0)
excelがシートの記載内容から考えて忖度してくれる
でないの?
それがいいようにしてほしいという偉い人の言い分かと思う
Re: (スコア:0)
まあ、表計算とはいえ、集計するのに属性とかつかうから、数値だけとは限らない
あるある (スコア:0)
・LOOKUP時に文字列と数値で不一致
・RIGHT、LEFTで桁取り違え
・文字列セルを数値セルに変えたら先頭にシングルクォーテーション入ってて文字列扱い
・左寄せ書式なのに数値、右寄せ書式なのに文字列
・CSVレベルでダブルクォーテーション入ってて計算評価できない
・CSVレベルでイコール始まりの数式だったと気付くのに小一時間
・CSVレベルでくくられておらず郵便番号や電話番号取り込んだらゼロとんだ
なんか挙げればきりないなぁ
CSVでのデータ連携が無くならない限りどうにもならんのだろうなぁ
Re:あるある (スコア:1)
>・CSVレベルでダブルクォーテーション入ってて計算評価できない
セル内改行と、半角カンマを文字列データに入れるのを禁止にしたい。
Re: (スコア:0)
セル内改行と、半角カンマを文字列データに入れるのを禁止にしたい。
カートシステムとかCMSとか商品DBとかが諸悪の根源ですねぇ
HTMLをセル内に記述しましょうと同義の仕様だものなぁ
/*
とはいえCSVがデータやり取りでやりやすってのはあるよなぁ
API実装は参入障壁になりがちだし
*/
Re: (スコア:0)
別枝にデータベースとして使うなというのがあるけど、よくあるのは会社名の英語表記とか。
インチの省略形でダブルクォーテーションが使われてたりもする。
Re: (スコア:0)
・CSVレベルでくくられておらず郵便番号や電話番号取り込んだらゼロとんだ
エクセルはダブルクォーテーションで囲ってようが、囲ってなかろうが関係ない。
ダブルクォーテーションで囲ってようが中身が数字なら0すっ飛ばします。
実際エクセルで書式文字列の 0000をCSV保存してみると言い。出力したCSVはダブルクォーテーションで囲われるけど、
今度はそのCSVをエクセルで開いた瞬間にエクセルのセルに出るのは数字の0だから。
Re:あるある (スコア:2)
>実際エクセルで書式文字列の 0000をCSV保存してみると言い。出力したCSVはダブルクォーテーションで囲われるけど、
>今度はそのCSVをエクセルで開いた瞬間にエクセルのセルに出るのは数字の0だから
Excelで '0000,'0123 と入力してcsv保存
text editorで開くと 0000,0123
Excelで開き直すと 0,123
あかん
Re: (スコア:0)
#4474303 ですが、
ダブルクォーテーションは?と思ってこっちでも再度ためしたら、以前のバージョンのエクセルではCSV保存時に引用符でくくるオプションが選べてそれがデフォルトだったし、書式で文字列設定してればくくられたんだが、
今のバージョンオプションもなければ文字列でもくくられなくなってるな。
データ入力アンケンにて (スコア:0)
郵便番号、電話番号、社員番号、などなど。
何度顧客に説明に上がったことよ。
Re: (スコア:0)
セルの書式設定オプションで文字列を選択したら幸せになれるかも!
先生、計算に使いたくなったから数値書式にしたのに数値になりません
A:先頭にシングルクォーテーション入った数字で文字列化した値で数値書式セルになっています
# 碌でもない忖度するのは人間だけで胸焼けしとるというのに
Re: (スコア:0)
なりません。
そもそもエクセルは拡張子CSVを読み込む場合、設定済みの書式設定なんか無視して標準として読み込む。
その過程で”00001”は"1"の数値にされ、"1-1-1"は日付にされる。
拡張子がテキストなら書式指定ダイアログが出るけどね。
書式設定が役に立つのは、他のテキストエディタとかで開いたのを貼り付ける時だけ。
Re: (スコア:0)
EXCELそのものを開き「データ」-「外部データの取り込み」-「テキストファイル」を開いて
CSVファイルを指定。
だと「テキストファイルウィザード」が開くので書式を指定できる。
Re:16進数 (スコア:1)
CSVファイル(テキストファイル)にBOMを付けておくとUTF-8で認識してくれますよ