• 締切済み

excelVBAでX進法のマクロを作る方法

数字ではなく、記号で桁数をあげていきたいのですが、やり方が思いつきません。 どのようにすればいいでしょうか? 3進法が希望ではないですが、分かりやすく以下のように例を記載します。 例:3進法の場合 シートの(a,1)=a,(a,2)=b,(a,3)=cと記載されていれば、3進法と見なして、m以下のように桁をあげていく a,b,c,aa,ab,ac,ba,bb,bc,ca,cb,cc,aaa… 分かる方、よろしくお願いします。

みんなの回答

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.3

一例です。   ' ' ===============♪   ' ' 'シートの列番地'同様の規則でシリアルコードを振る。 ' ' A列に'数字の代わりに使う文字'一文字ずつ ' ' 設定されたセルがふたつ以上あること 要。 ' ' それらがいくつあるかで基数を規定。 ' ' 全半角0や '^ などの制御記号は不可。(重複未処理)(一文字でないセル、可=無視) ' ' 他、可読性重視、エラー処理略。 ' ' n = (n - 1) \ 基数 →ベター→ n = Int((n - 1) / 基数) Sub re7529645() Dim 最大値 As Long   最大値 = 1000 '←任意指定 Dim 暗号リスト As String, ret As String Dim 最下行 As Long, 基数 As Long, 行ずれ As Long, 十進数 As Long Dim i As Long, n As Long   最下行 = Cells(Rows.Count, "A").End(xlUp).Row   For i = 1 To 最下行     If Cells(i, 1) Like "?" Then 暗号リスト = 暗号リスト & Cells(i, 1)   Next i ' ' ↑A列一文字セルの値を連結して ' ' 数字の代りになる文字列群を採る   基数 = Len(暗号リスト)   行ずれ = 最下行 - 基数 ' ' ↓数字に対応した暗号リストを使って ' ' ↓シリアルコードを展開   For 十進数 = 基数 + 1 To 最大値     n = 十進数     Do       ret = Mid$(暗号リスト, (n - 1) Mod 基数 + 1, 1) & ret       n = (n - 1) \ 基数     Loop While n > 0     Cells(十進数 + 行ずれ, 1) = ret     ret = ""   Next 十進数 End Sub   ' ' ===============♪   こんにちは   参考の為に過去のご質問を拝見したところ ステップ実行&トレースはお出来になるようなので敢えて解説は添えません。 Do...Loop内の2行、読み込んでモノにしちゃってください。  変数 n :何を表し、どう変化するか  (n - 1) Mod 基数 :剰余の求め方、何故 - 1 ?  n = (n - 1) \ 基数 :商の求め方、何故 - 1 ?   こちらでニーズを把握しきれてない気もしますが、 わりとメジャーなロジックですし、応用できる場面が多々あるとは思います。   それでは、また

全文を見る
すると、全ての回答が全文表示されます。
  • excelist
  • ベストアンサー率56% (13/23)
回答No.2

X進数の数字を一旦10進数に戻してから足し算なり引き算をして、結果をまたX進数に戻す、というのが単純で分かりやすいかもです。 もしくは記号部分が連続するアルファベット(a,b,c・・・)であるならasc関数で文字コードに変換してやれば数値として計算可能です。例えば小文字のアルファベットの場合、文字コードから87引いてやると「a」⇒「10」、「b」⇒「11」のように扱えます。

全文を見る
すると、全ての回答が全文表示されます。
  • f272
  • ベストアンサー率46% (8042/17183)
回答No.1

> やり方が思いつきません。 いろんなやり方があると思うけど... たとえば 0,1,2,00,01,02,10,11,12,20,21,22,000,... と数字を作っておいて,0→a,1→b,2→cと置換するとか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのマクロについて教えてください。

    エクセルのマクロについて教えてください。     a b c d A   1 2 3 4 B  5 6 7 8    ↓    aA1    bA2    cA3    dA4    aB5    bB6    cB7    dB8 という並びになるようにしたいので、よろしくお願いします。

  • 因数分解で解けない問題があります。

    因数分解で解けない問題があります。 a(b-c)^2+b(c-a)^2+c(a-b)^2+8abcという問題です。 =(b-c)^2+b(c^2-2ca+a^2)+c(a^2-2ab+b^2)+8abc =(b-c)^2+bc^2-2cab+ba^2+ca^2-2abc+cb^2+8abc =(b-c)^2+(ba+ca-2bc-2bc+8bc)a+bc^2+cb^2 ここまで解いてみたのですが、この続きが分りません。詳しく説明していただければありがたいです。すみませんがお願いします。

  • 線形代数の問い

    「3次正方行列A,Bで,スカラー行列ではない3次正方行列Cに対してAC=CA,BC=CBかつAB≠BAとなる例A,B,Cを挙げよ。」 という問題を,どのように考えればよいか全く分かりません。申し訳ありませんが,実際にA,B,Cの例を挙げて教えていただけたらうれしいです。  かなり困っています...どうぞよろしくお願いします。

  • 不等式

    三角形ABCにおいて、 ↑AB・↑AC=X ↑BA・↑BC=Y ↑CB・↑CA=Z このときXY+YZ+ZA>0を証明しろという問題なんですが… AB=c BC=a CA=b として計算し、さらにc^2=C a^2=A b^2=Bとすると、XY+YZ+ZX=-A^2-B^2-C^2+2(AB+BC+CA)となったんですけど、0以上の証明ができません。どなたか解説お願いします。

  • 一部のフォルダのみ複製(コピー)する方法

    下記のようなフォルダ構造があります(ABC…フォルダ内にそれぞれ2つずつフォルダが入れ子になっています)。 AーAa  ∟Ab BーBa  ∟Bb CーCa  ∟Cb … ここから、下記のようなフォルダ構造のみを「複製(コピー)」したいと考えています。 AーAa BーBa CーCa … 実際はABCだけでなく複数フォルダが存在しており、これらを一括で上記フォルダ構造に複製できるプログラム・方法を探しております。 何か良いアイディアはございませんでしょうか。何卒よろしくお願いいたします。

  • にゃんこ先生の自作問題、4実数a,b,c,dとその基本対称式の符号の可能性

    にゃんこ先生といいます。 3実数a,b,cと、基本対称式a+b+c,ab+bc+ca,abcにおいて、その符号の可能性を下のように調べました。 a,b,cの符号が分かると、abcの符号は一通りに決まるので、それは省略します。 a>0,b>0,c>0ならばa+b+c>0,ab+bc+ca>0 a>0,b>0,c<0でa+b+c>0,ab+bc+ca>0の例:a=3,b=3,c=-1 a>0,b>0,c<0でa+b+c>0,ab+bc+ca<0の例:a=1,b=1,c=-1 a>0,b>0,c<0でa+b+c<0,ab+bc+ca<0の例:a=1,b=1,c=-3 a>0,b>0,c<0でa+b+c<0,ab+bc+ca>0はありえない。 a>0,b<0,c<0でa+b+c>0,ab+bc+ca>0はありえない。 a>0,b<0,c<0でa+b+c>0,ab+bc+ca<0の例:a=3,b=-1,c=-1 a>0,b<0,c<0でa+b+c<0,ab+bc+ca>0の例:a=1,b=-3,c=-3 a>0,b<0,c<0でa+b+c<0,ab+bc+ca<0の例:a=1,b=-1,c=-1 a<0,b<0,c<0ならばa+b+c<0,ab+bc+ca>0 では、4実数a,b,c,dと、基本対称式a+b+c+d,abc+abd+acd+bcd,ab+ac+ad+bc+bd+cd,abcd(これは省略する)において、その符号の可能性はどうなるのでしょうか?

  • エクセルで最後行に入力したデーターを自動で別の(ファイル)シートの任意の場所に自動で転記できるようにしたいのですが・・。

     全くの初心者です。よろしくお願いします。 初心者にもかかわらず無謀にもエクセルで最後行に入力したデーターを自動で別の(ファイル)シートの任意の場所に自動で転記し、上下が逆になる形にしたいと思います。 例) A B C D E F 1 a aa ab ac ad 2 b ba bb bc bd 3 c ca cb cc cd 4 d da db dc dd 行4に d da db dc ddを入力すると A B C D E F E 1 2 3 d da db dc dd 4 c ca cb cc cd 5 b ba bb bc bd          6 a aa ab ac ad          別(ファイル)シートの任意の場所へ挿入する形で転記され、入力のシートとは上下が逆になる。  何かよい方法がありましたら、よろしくお願いします。

  • 配向テンソルについて

    0点から座標(a,b,c)に配向している繊維の配向テンソルを求めると |a|        |a^2 ab ac |  |b|(a、b、c)=|ba  b^2 bc | |c|        |ca  cb c^2| となるようですが、なぜ       |a| (a,b,c)|b|=(a^2、b^2、c^2)       |c| とはならないのでしょうか? すみませんがよろしくお願いいたします。

  • グラフの作成

    エクセル表は色んなものを作ってきましたが、それに付随するグラフを作りたいのですが、中々思うようにできません。 分類A 分類B 値 A   AA  10 A   AA  20 A   AB  10 A   AC  10 A   AB  10 B   BA  10 B   BC  10 B   BD   5 C   CA  10 C   CA  20 C   CB  10 C   CC  10 D   DA   5 D   DA   3 D   DB   2 と言うエクセル表を分類AのAからDまでの4分割の合計値の円グラフと、分類Bの12分割の合計の円グラフを書きたいのですが・・・ このエクセル表からはグラフは書けませんか? 一度分類ごとに合計を出したエクセル表からはできるのですが、元の表からグラフにできませんか? 何せPCに疎く、独学でやってますので限界があります。 よろしく御指導ください。  

  • 不等式

    a,b,cが正の数のとき、(a+b+c)/3と√{(ab+bc+ca)/3}の大小を比較する問題です。 {(a+b+c)/3}^2-√{(ab+bc+ca)/3}^2=(a2+b2+c2-ab-bc-ca)/9     ={(a-b)^2+(b-c)^2+(c-a)^2}/18 からどのように求めるかわかりません それから、疑問なのですが {(a+b+c)/3}^2-√{(ab+bc+ca)/3}^2と引き算をするのですか?

専門家に質問してみよう