LibreOffice CalcやMicrosoft Excelで[ISBN-13からISBN-10への変換][ISBN-10からISBN-13への変換]を行なうための関数のコード

A1にハイフン付きでもいいので、ISBN-13のコードを入れる。 B1、C1、D1、それぞれに、以下のコードをコピー&ペーストすると、[ISBN-13 to ISBN-10][ISBN-10 to ISBN-13]の変換が、LibreOffice Calcにおいて可能になることが検証された。

B1

=substitute(A1,"-","")

C1|ISBN-13 to ISBN-10

=IF(11-MOD(MID(B1,4,1)*10+MID(B1,5,1)*9+MID(B1,6,1)*8+MID(B1,7,1)*7+MID(B1,8,1)*6+MID(B1,9,1)*5+MID(B1,10,1)*4+MID(B1,11,1)*3+MID(B1,12,1)*2,11)=11,CONCATENATE(MID(B1,4,9),"0"),IF(11-MOD(MID(B1,4,1)*10+MID(B1,5,1)*9+MID(B1,6,1)*8+MID(B1,7,1)*7+MID(B1,8,1)*6+MID(B1,9,1)*5+MID(B1,10,1)*4+MID(B1,11,1)*3+MID(B1,12,1)*2,11)=10,CONCATENATE(MID(B1,4,9),"X"),CONCATENATE(MID(B1,4,9),11-MOD(MID(B1,4,1)*10+MID(B1,5,1)*9+MID(B1,6,1)*8+MID(B1,7,1)*7+MID(B1,8,1)*6+MID(B1,9,1)*5+MID(B1,10,1)*4+MID(B1,11,1)*3+MID(B1,12,1)*2,11))))

D1|ISBN-10 to ISBN-13

=IF(AND(MID(C1,1,1)="4",LEN(C1)=10), "978" & LEFT(C1,9) & IF(10-MOD(SUMPRODUCT(MID("978"&LEFT(C1,9),ROW(INDIRECT("1:12")),1)*IF(MOD(ROW(INDIRECT("1:12")),2)=1,1,3)),10)=10,0,10-MOD(SUMPRODUCT(MID("978"&LEFT(C1,9),ROW(INDIRECT("1:12")),1)*IF(MOD(ROW(INDIRECT("1:12")),2)=1,1,3)),10)), C1)