質問: excel で符丁計算式を設定したいのですが・・ 符丁 aが1、bが3・・・jが「0} 更にlと言う前の数字 例えば 数字10の場合=aj 数字25の場合=ae 数字225の場合=ble 数字1200の場合=abjl 数字10000の場合=ajljl lha前の数字 これをオートsumで計算できる vbaと思うのですが、何処にどの様なプログラムを入れれば良いのか お教え下さい excelは2013(15.0.4981.1000)です
回答: 遅くなりました。 今までとそんなに変わっていないと言われれば、そうかもしれませんが、いくつか苦心しました。カスタマイズしやすいように、文字をきれいに並べました。 合計のsumchrs() は、100%excel関数のsumとは同じではないのですが、似せました。a1:a10 という範囲でも、a1:a5,a7:a8 という引数でも、受けられるようにしました。 '//標準モジュール public function convert_aton(byval text as string) '文字から数字 dim i as long dim buf as string dim a as string, n as string dim n1 as string text = strconv(text, vbnarrow + vbuppercase) for i = 1 to len(text) a = mid(text, i, 1) if not a like "[a-z\.]" then convert_aton = cverr(xlerrvalue): exit function n = switch(a = "a", "1", a = "b", "2", _ a = "c", "3", a = "d", "4", _ a = "e", "5", a = "f", "6", _ a = "g", "7", a = "h", "8", _ a = "i", "9", a = "j", 0, _ a = "l", n1, a = ".", ".") buf = buf & n n1 = n n = "" next convert_aton = val(buf) end function public function convert_ntoa(byval text as string) '数字から文字へ dim i as long dim buf as string dim a as string, n as string dim a1 as string if isnumeric(text) then for i = 1 to len(text) n = mid(text, i, 1) a = switch(n = "1", "a", n = "2", "b", _ n = "3", "c", n = "4", "d", _ n = "5", "e", n = "6", "f", _ n = "7", "g", n = "8", "h", _ n = "9", "h", n = "0", "j", _ n = ".", ".") if a1 = a then a = "l" buf = buf & a a1 = a: a = "" next end if convert_ntoa = buf end function public function sumchrs(paramarray chrs()) '合計(少し甘くできています) dim n as variant dim c as variant dim nums as double dim mtotal as double for each n in chrs if typename(n) = "range" or isarray(n) then for each c in n if typename(c) = "range" then c = c.value end if if vartype(c) = vbstring then if c like "[a-l]*" then '* nums = convert_aton(c) elseif isnumeric(n) then nums = val(n) end if end if mtotal = mtotal + nums next else mtotal = mtotal + n end if next sumchrs = mtotal end function ' ---続き--