- 締切済み
ExcelからCSV出力して読込むと削除変換される
Excelのブック1のシートに入力されたデータを 一度、CSVファイルに出力して このCSVファイルを別のツール(perlなど)で変換して この変換されたCSVファイルを再び 別のExcelのブック2のシートに読み込ませたいのですが Excelのブック1から出力したCSVファイルを 別のツールで変換しなくてもそのまま Excelのブック2のシートに読み込ませた時点で 文字の一部が消えたり数式が値になったりしてしまっています。 具体的には、 セルの先頭の ' (シングルクォーテーション) が消えてしまったり、 1つ足りなくなったりしています。また、 先頭の =1+1 などは、(表示上) 2になったりしてしまっています。 なお、セルの書式設定が標準だと、先頭の @ の後に続けて入力すると 正しく入力できませんが、セルの書式設定を文字列にすると、 この @ の問題は起きなくなりました。でも、セルの書式設定を文字列にしても ' (シングルクォーテーション) や数式が計算結果になる問題は 解決していません。 (問1) 削除されたり変換されてしまうのは ・先頭の ' (シングルクォーテーション) ・先頭の = ・先頭の @ の3つのケースだけでしょうか。 このほかにもありましたら教えてください。 (問2) 先頭の =1+1 の場合ですが セルの書式設定が標準の状態で =1+1 と入力すると 数式バーには =1+1 と表示されていて セルの書式設定が標準だと2と表示されていてその後 セルの書式設定を文字列にしても2と表示されています。 逆に、 セルの書式設定が文字列の状態で =1+1 と入力すると 数式バーには =1+1 と表示されていて セルの書式設定が文字列だと =1+1 と表示されていてその後 セルの書式設定を標準にしても =1+1 と表示されています。 いずれも入力したデータは同じなのに 入力時点での表示形式で表示内容が固定されてしまっていて その後、表示形式を変更しても表示内容が反映されていない ように感じるのですが何が起きているのでしょうか。 (問3) 前述の理由により、CSVファイルをセルの書式設定が文字列 の状態で読み込ませることはできるのでしょうか。 (後でセルの書式設定を文字列に変更しても =1+1 と表示されないので) (問4) Excelのブック1のシートのセルには ユーザーが好き勝手な文字や数値や記号を入力します。 何を入力されても変化してしまわないようにすることはできるでしょうか。 ( 頭に ' を付けることをユーザーに強要するとか、 事前にセルの頭に ' を入力しておくなどはなしです) (問5) もし、できない場合、Excelのブック1のシートの各セルの先頭に ' (シングルクォーテーション) や = から始まる数式を 入力することができないように制限をかけることはできるのでしょうか。 よろしくお願いします。(Windows7,Excel2010)
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
>(問1) 削除されたり変換されてしまうのは Excelの基本的な処理をご存じないだけで「削除」や「変換」ではありません。 先頭の`(シングルクォーティション)はExcelの動作として強制的に文字列を扱うための宣言になりますので、実際のデータとしては`を除いた文字列になります。 また、先頭の=(イコール)は数式であることを宣言していると解釈されますので、数式の演算結果がそのセルの値となります。但し、セルの書式を文字列に設定した後で入力すると入力したデータが全て文字列と判断されます。 @(アットマーク)についてはどのような現象かが説明されていないので検証していません。 >(問2) 先頭の =1+1 の場合ですが (問1)に述べた通り表示形式が文字列以外のときは先頭の=で以後の文字列は数式として処理することを意味しますので演算後の値がそのセルの値となります。 表示形式を「標準」として数式を入力すればその後に表示形式を「文字列」に変更しても演算結果を文字列として表示するだけになり、元の数式自体を文字列にすることはありません。その反対に表示形式を「文字列にしてから=1+1のように入力すると文字列としてセルに保存されますので計算を行いません。その後に表示形式を「標準」に戻してもセルの文字データを数式に置き換えることは無く書き換えるまでは文字列のままになります。 >(問3) 前述の理由により、CSVファイルをセルの書式設定が文字列の状態で読み込ませることはできるのでしょうか。 新規にExcelブックを開いてCSVファイルから外部データをインポート(取り込む)する方法で対応できます。 列毎にデータの形式を指定できますが行については全てが同じ形式になります。 先頭の`はCSVファイルへ出力した段階で`を除いた文字列になります。 先頭に=があると形式を「標準」でインポートすると数式と見做されます。 >(問4) Excelのブック1のシートのセルにはユーザーが好き勝手な文字や数値や記号を入力します。 >何を入力されても変化してしまわないようにすることはできるでしょうか。 Excelの基本を学習して応用するようにしてください。 あなたが考えていることとExcelがどのように処理するかの認識の違いなのであなたの考え方を見直してください。 次の(問5)も同じ見解になります。
- satoron666
- ベストアンサー率28% (171/600)
問1 私の知る範囲では、書式設定なども完全に消えますね。 Excelを見た目のまま、テキストに書き写した感じのイメージです。 書式、数式などは保持されません。 シングルコーテーション’が消えてしまうのは、Excel上で文字列を表示するときにこれを使うからかと思います。 問2 セルの書式設定が標準だと2と表示されていてその後 セルの書式設定を文字列にしても2と表示されています。 =1+1を数式だと判断し、2という結果を表示する。その後結果を文字列にするから、2が表示されるのでは? セルの書式設定が文字列だと =1+1 と表示されていてその後 セルの書式設定を標準にしても =1+1 と表示されています。 =1+1 を 文字列として認識させた後に =1+1 を標準にしても、文字列として認識します。 たぶんですが。 問3 んーー、 'を2個入力しておくとか? ''=TODAY() とか? んー、データ→外部データの取り込み→データの取り込み カンマ区切り?「次へ」→「次へ」→「列データの形式」 文字列 にすればいいのでは? (Excel2003の手順で書いてます) 問4 >何を入力されても変化してしまわないようにすることはできるでしょうか。 ??良く分からないですが、 ユーザーから編集が出来ないようにする方法は無いか、という考えでしょうか? んーーー、保護するとかですかね? 入力規制を掛ければいいのかと思います。 問5 入力規制をかければ良いのではないかなーと思います。 以上、微妙な知識でしたが、参考になれば幸いです。
補足
satoron666さん、 回答ありがとうございます。 (問1) 先頭の`(シングルクォーティション)は 本来の記号の意味としては 扱うことはできないということですね。 (問2) 実際のこのような挙動から セルの書式設定の表示形式タブの名称は 「表示形式」ではなく「入力形式」の方が適しているようで 「入力形式」であったならば 悩まなかったようなような気がします。 (問3)「列データの形式」があることに気がつきませんでした。 設定したら =1+1 と表示されるようになりました。 (問4) 分かりにくくてすいません。質問の意図は、 「ユーザーが先頭に`(シングルクォーティション)や =(イコール)を入力しても、宣言ではなく、 記号そのものとして処理させたかったのですが (問1)の回答から、これはできないと理解しました。 この回避策として (問5)の質問になります。 (問5) Excelの機能で、ユーザーが先頭に `(シングルクォーティション)や=(イコール) を入力できないようにしたいのですが 入力規制でこのようなことができるのでしょうか。 よろしくお願いします。
お礼
回答ありがとうございます。