納期や出荷日などデータを数字のみにしたい

納期や出荷日などデータを数字のみにしたい

単位が含まれるデータがある

ご提供頂くデータの中で、出荷日や納入日など、数字と単位が複合している場合があります。

品番 品名 出荷目安
010001 製品1 3営業日
010002 製品2 5営業日
010003 製品3 10営業日
010004 製品4 20営業日

取引先によって単位の表記にバラつきがあるため、データベースに保存するために数字のみのデータに加工した方がグローバル展開を考慮しますと、単位はその国で使われる言語で表記を行う場合は、数字と単位を別々の項目にする方が扱いやすくなります。

データから数字のみを取り出す

今回は中々難しい解説になります。数字のみを取り出す方法は複数存在しますが、小数点が含まれることを考慮して以下の方法をご紹介いたします。前提として、数字+単位で構成されるデータに限ります。

今回の方法は、COLUMN(カラム)関数、LEFT(レフト)関数、LOOKUP(ルックアップ)関数3つの関数を使います。

COLUMN関数の書式

COLUMN関数は、引数に指定した列番号を返却します。また範囲がセル範囲とする場合に、横方向の配列として返却します。書式は

=COLUMN([範囲])

になります。 配列という言葉が出てきましたが、複数の要素(値)が集まったデータが配列になります。 {3,5,10,20} というような内容が配列の表記例です。 これがどのような役割となるのかは後述します。

LEFT関数の書式

別の記事でもご紹介しております、指定された文字数の文字列を返す、LEFT関数になります。何となく文字を取り出すという意味で使いそうな関数です。 書式は

=LEFT(文字列, [文字数])

になります。今回は文字の取り出しには使用せず、配列の中に含まれたデータから数字のみにするために使用します。詳しくは後述いたします。

LOOKUP関数の書式

なんたらLOOKUPというのは他の記事でも紹介しておりますが、今回は、1 つの行や列を検索する LOOKUP関数を使用します。こちらの関数には、ベクトル形式と配列形式と2つ検索する方法がありますが、COLUMN関数の書式にてご案内しておりますが、配列形式を使います。 配列型式での書式は、

=LOOKUP(検査値, 配列)

になります。配列に含まれるデータを使うんだなと何となく理解頂けたら幸いです。

関数の組み合わせと式の解説

今回は出荷目安内の数字を取り出しますので、その隣に取り出すとして以下のような内容になります。

=LOOKUP(10^5,LEFT(C1,COLUMN(1:1))*1)

COLUMN関数 第1引数

データの中の文字を左から順に取り出して、取り出した文字を配列に格納し、配列にある検査値に近い数字を取り出すという具合です。 まずは配列を式の中で作ります。

=LOOKUP(10^5,LEFT(C1, COLUMN(1:1) )*1))

1列目の1行目を全て範囲としています。 こちらの式では指定、一旦の最大列数は、256になりますので、256個の文字列が格納できる配列が作られます。 {1,2,3,4,5,・・・・256} 256個でなくても問題は無いですが、式をシンプルにするためこのようにしています。

LEFT関数 第1引数

=LOOKUP(10^5,LEFT(A1, LEFT(C1,COLUMN(1:1) )*1))

配列には、1、2、3・・・・と数字が入っていますが、LEFT関数は、その配列に含まれる数字ごとに文字を取り出します。 よって、{3,3営,3営業,3営業日,3営業日,3営業日・・・} という配列が作られます。 段々とできあがっていきますね。

乗算(掛け算)

=LOOKUP(10^5,LEFT(A1, LEFT(C1,COLUMN(1:1))*1) )

配列に含まれる文字列に、1を掛けることによって、数字のみのデータにします。 {3,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!・・・} とこの配列内では、先頭以外は、文字列掛ける1となるので、「#VALUE!」というエラーになりました。

LOOKUP関数 第1引数

=LOOKUP(10^5 ,LEFT(A1, LEFT(C1,COLUMN(1:1))*1))

配列の中の検査値から一番近い数値を取り出すようにするのですが、参考では10の5乗(式では、10^5としている部分)で"100,000"としていますが、この項目は出荷目安でしたので、多くても3ヶ月ぐらいとしても"100"でも問題は無いと思います。 上記のデータ例での各行の結果は

1行名は、{3,#VALUE!,#VALUE!,・・・} なりますので、が取り出されます。

2行名は、{5,#VALUE!,#VALUE!,・・・} なりますので、が取り出されます。

3行名は、{1,10,#VALUE!,・・・}   なりますので、10が取り出されます。

4行名は、{2,20,#VALUE!,・・・}   なりますので、20が取り出されます。

になります。これで文字が取り出せました。

Massteryで対応するとこうなる

エクセルの方法では長々と解説して参りましたが、Massteryは今回の例で数字だけ残す関数を用意しています。 今回の例では、数字の後ろに日本語が付くデータでした。データから日本語を削除する関数を使います。

Massteryでの数字だけと取り出す例

指定内容

変換対象カラム
Massteryはフォーマットの項目単位で変換を指定しますので、出力ファイルの項目(列の名称)を指定します。
変換方法
変換対象カラムに値またはロジックを適用する「=」を指定します。
値または変換ロジック
trim_japanese(“出荷目安”)

trim_japanese関数式の解説

Massteryでの書式は以下になります。

trim_japanese("変換対象カラム名称")

引数は1つになります。

引数

trim_japanese("出荷目安")

エクセルで行いますと複雑な組み合わせで式を作りましたが、Massteryでは商品情報に特化した機能を複数用意しておりますので、簡単にデータ整備を行うことができます。 もしご興味がありましたら、お問い合わせくださいますようお願い致します。

関連記事

同じカテゴリの記事

お問い合わせ

Massteryのより詳しい情報、ご対面でのご案内をご希望の方は是非お問い合わせください。
下記のお問い合わせフォームよりお申し込み頂ければ担当の営業からご連絡いたします。

運営会社 フォルシア株式会社

Close Bitnami banner
Bitnami