アプリ版:「スタンプのみでお礼する」機能のリリースについて

いつもお世話になっております。

エクセルファイルに13ケタ・8ケタのJANコードを羅列した行があるのですが、手作業で入力した為、間違っている可能性があります。

そこで、チェックデジットが合っているかを調べる数式を作成したいと思うのですが、そのようなことは可能でしょうか?
また、8ケタと13ケタを1度にチェックできるでしょうか?
ご存知の方がいらっしゃったら、宜しくご教授お願い致します。

A 回答 (3件)

チェックデジットを数式に変えて判定するということですよね?


簡単なことだと思いますが。

8桁と13桁の違いは対象のレングス(文字列長)を判定して式を分岐させればいいですし、特に難易度は高いとは思えません。

とりあえずVBの例がここにあります。
http://www.ruriplus.com/msaccess/tch/tch_049.html
ExcelのVBAにするのにはそんなに違いはないでしょう。

参考URL:http://www.ruriplus.com/msaccess/tch/tch_049.html
    • good
    • 0
この回答へのお礼

ありがとうございます。

何分VBは初心者で、エクセルのVBA以外の知識は殆どないもので・・・。

いただいたURLの情報は、関数を作成するというものですね。自分で試してみたことはないのですが、頼ってばかりですと成長できないので、こちらを参考に何とか組み立てていきます。

お礼日時:2003/12/10 16:49

>数式で一度に行うということは可能でしょうか


エクセルの通常の関数式では出来ません。複雑になりすぎると言うのが正しいでしょうが。
#1のご回答のようなことを、関数式でやろうとすると
関数のネストが深くなり過ぎて、手におえないでしょう。
そこでユーザー定義関数を作るのが、この場合適当でしょう。
>VBは初心者で、エクセルのVBA以外の知識は殆どないもので・
VBAだって、そう甘いものやおまへんで。
VBAのユーザ定義関数を作るのポイントは、シートのセルには、=JAN8(A1)のように,引数にセル番地を入れ、VBEの標準モジュール(必ず標準モジュール)には
Function jan8(a)
(aをセルに入っている数や文字列として扱う、すなわち演算する)
End Function
とします。JAN8としたのは、JAN13と関数を分けられれば分けた方が、2モジュールになるが、考えやすいかと思いました。各行に混合しておれば、1つの関数にして、#2のご回答のように、Case分で分けざるを得ません。
    • good
    • 0
この回答へのお礼

了解です。
この辺まで複雑な計算になると、ユーザー定義関数の領域ということですね。

mld_sakuraさんに教えていただいたURLを参考にがんばってみます。

ご親切にありがとうございました。

お礼日時:2003/12/11 08:37

データ=4912345?の場合(?=cd)


5+3+1+4=13(偶数桁を足す)
13x3=39    (それに3を書ける)
4+2+9=15   (奇数桁を足す)
39+15=54   (両方を足す)
54の下一桁を取り出し
10-4=6     (10から下一桁を引く)
チェックディジットは6  (ゆえに)
49123456 がコード
13桁の場合も同じ

この回答への補足

早速ありがとうございます。

こちらの算出方法を、数式で一度に行うということは可能でしょうか?

補足日時:2003/12/10 16:51
    • good
    • 0
この回答へのお礼

補足の質問に対してimogasiさんより回答がありました。
数式では、難しいみたいですね。
何とかユーザー定義関数を組み立てていきます。

ありがとうございました。

お礼日時:2003/12/11 08:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!