会社で連番を当てていく作業があり、
0~9、A~H、J~N、P~Z→0に戻るという34進数
(数字10個、アルファベットのアイとオーを抜いた24個)という定義を実装させたいと思っています。
アルファベットは全て半角大文字、数字は半角です。
※実装方法についてはVBAでもユーザー定義式でも構いません。
VBAを使うということであれば、数値のASCIIコードを確認してずらしていくということになると思うんですが、桁上がりの考え方がだいぶ面倒です。
何か参考になるようなサイトやコードがあればご教示下さい。
outofjisさんと同じ考え方かな
ざっと書いたのでてきとーですが
Function test(数値) Dim atai(9) As String shin = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z") keta = 0 atai(keta) = shin(数値 Mod 34) zan = Int(数値 / 34) keta = keta + 1 Do Until zan < 34 atai(keta) = shin(zan Mod 34) zan = Int(zan / 34) keta = keta + 1 Loop If zan <> 0 Then atai(keta) = shin(zan) For i = 0 To keta test = atai(i) & test Next End Function
@たか様
2020/06/16 09:27:01回答ありがとうございます。
要望がうまく伝わっておらずに申し訳ないんですが、
ABC…1B8のような文字列があって1行下にずれると1B9,1BA…1BZ,1C0のような桁上がりを実現させたかったというものです。
これだと単純な数値を34進数にすることはできたのですが、本来実現したかったこととは異なってしまいました。
申し訳ありませんが、追加でコメントをいただければと思います。
1B8、1B9 これは数式の結果ではなく値になっていて欲しいということですか?
2020/06/16 13:05:51もしくは 1B8のセルがA1だとして、 =A1+1 の結果を "1B9" としても良い?
後者でしたら34進数を一旦10進数に戻して、上記コードで再度34進数に戻せば良いと思います。