質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

837閲覧

数字のみの商品コードは Excel上のセルで 表示のされ方に関係なく 文字列か数値かの2面性を持ち合わせている?

saya24

総合スコア247

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/12/14 14:09

大変初歩的なことかも知れないのですが、セルに格納される値が 数字の羅列であった場合、
数値の可能性の値と、文字列の値としての可能性、両方を持ち合わせるものでしょうか?

VALUE関数で数値扱いにできる・TEXT関数で文字列扱いにできるという実状、また数字の羅列を各々の関数を用いたうえで IF関数で比較すると 明らかに異なるとの判断が下される理由から 上記問い合わせに寄せられる回答は 大筋見えているのですが....

上記にYesと回答を受けた前提で更に質問:

イメージ説明
①セルの書式設定メニューで、表示形式という設定を行うことができますが、この変更が 値の属性まで変えてしまうことはない?

②ブックAに収まっていた商品コードと品名名称の一覧を SQLite(データベース)の一テーブル:両項目文字列=TEXT に取り込みました。改めてブックB上に 一部の商品コードのみを羅列し、データベース側から商品コードに合致する品名名称を取得しようとしたところ、ブックBの商品コード横に 得られた品名名称は 一切ありませんでした。(Python Openpyxl)
ブックBの商品コードが格納されたセルを、ISNUMBER関数で確認すると全てがTRUEでした。

ブックB上で データベースから品名名称を取得できなかった理由は SQLiteの該当テーブルの属性をTEXTとしたから と考えるのが必然なのでしょうか?(無加工でINSERT) それとも ブックAに収まっていた商品コードが 文字列の値であったため と考えるべきなのでしょうか? 

ブックAで 商品コードが数字の羅列が収まったセルについて、ISNUMBER関数で確認を図ると TRUEが返ってきたので....やはりデータベース・文字列属性の列へ収めたことが起因しているのかなぁ....

申し訳ありません、まとまりのない質問で

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

いろいろ書いてありますが、

数字の羅列であった場合、数値の可能性の値と、文字列の値としての可能性、両方を持ち合わせる

そんなことはありません。 数値と文字列は別のものです。別だから相互に変換するためのVALUE関数やTEXT関数が存在するのです。

②ブックAに収まっていた商品コードと品名名称の一覧を SQLite(データベース)の一テーブル:両項目文字列=TEXT に取り込みました

ブックB上に 一部の商品コードのみを羅列し、データベース側から商品コードに合致する品名名称を取得しようとしたところ、ブックBの商品コード横に 得られた品名名称は 一切ありませんでした。(Python Openpyxl)

文字列123と 数値123は別のものです。
なので、上記のような状況であれば、検索にヒットしないのは当然です。

投稿2021/12/15 01:28

TakaiY

総合スコア13788

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saya24

2021/12/15 01:56 編集

TakaiYさん ありがとうございます。何を今さらと皆様お思いになられるレベルの話題かも知れませんが 私にとってもは 非常に心強いご見解です。 文字列と数値扱いの値は 別のものとのこと、まず これを認識できました!!! すみません...しつこくて ブックAからDBに登録したと記載しましたが、ブックA上の当該セル値は 予めISNUMBER関数=TRUEの判定を受けていたとしたら、DBの列定義がまずかった と考えるべきなのでしょうか? それと...Excelの書式設定=表示形式タグで 文字列を選んでも 数値認識の値が 文字列に変わることはない とのことでしょうか? 引き続きご見解を頂けたら 幸いでございます。
TakaiY

2021/12/15 02:22

> .Excelの書式設定=表示形式タグで 文字列を選んでも 数値認識の値が 文字列に変わることはない ありません。 単に表示のしかたが変るだけです。 数値で、表示桁数を設定しても値に変化が無いのと同様です。 > ブックAからDBに登録したと記載しましたが、ブックA上の当該セル値は 予めISNUMBER関数=TRUEの判定を受けていたとしたら、DBの列定義がまずかった と考えるべきなのでしょうか? excelにあるデータをどのようにDBに登録したのかがわからないのでなんとも言えません。ブックAで数値となっていたものがDBには文字列で入っているのが意図したものなのかそうでないのかもわかりません。 気にしていなかったのであれば、気にするようにするのが正しいでしょう。 ちなみに、 商品コードのように、数値に見えるけれども数値でない=計算の対象にならないもの、については文字列として扱うここが多いですね。 桁数を合せるために頭に0を付けることも多いですし。
saya24

2021/12/15 04:40

TakaiYさん 潔い回答で気持ちいいです、誠にありがとうございます。 恥をしのんで聞いてよかったですよ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問