• ベストアンサー

既存Excel関数だけでA√B

既存Excel関数だけを使用した数式で、入力した整数Nに対して、A√Bの形に直した場合の整数A、Bを求める方法はないでしょうか。要はNを割り切る最大の平方数が返せればいいのですが、これが意外とExcelでは難しく、現在お手上げ状態です。 なお、Nの最大値N_Mがわかっている場合には√N_M以下の整数について大きい方からひとつひとつ割り切れるかをIF文で調べていく方法は考えつきましたが、可能ならもっとシンプルに、Nの大きさにかかわらず一律に適用できる数式が構築したいと思っています。 また、マクロを使用する方法はここでは対象外とします。何かアイディアがある方がいらっしゃいましたら是非ご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (715/1478)
回答No.7

これは、配列を使ているので説明が難しいです。 Microsoft365を使って説明させていただきます。お持ちでない場合、こちらをご覧ください。 https://1drv.ms/x/s!AnfEM367OeSdkU_7aTo3KnAsF7mO?e=Jps7oo √200 の場合 1~14の 2乗で割っていき、余りが 0になる最大を求めればいいわけです。 E2: ="1:"&INT(SQRT(A2)) 「1:14」の文字列ができます。 F2: =ROW(INDIRECT(E2)) 1 ~14の配列が生成されます。 G2: =A2/F2#^2 2乗で割ります。 H2: =MOD(G2#,1) 余りを出します。 I2: =F2#*(H2#=0) 余りが 0以外の場合 0にします。 J2: =MAX(I2#) 最大値を求めます。 これらを纏めると、 =MAX(ROW(INDIRECT("1:"&INT(SQRT(A2))))*(MOD(A2/ROW(INDIRECT("1:"&INT(SQRT(A2))))^2,1)=0)) になります。 このままでは、Excel2021 かMicrosoft365でないと使えできません。 旧バージョンでもでも使えるようにするには ・Ctrl+Shift +Enter で配列数式にする。 ・INDEX を付ける。(INDEX は配列関数ととしての機能があるので、計算可能になります) 今回、後者の方法を取りました。 >この関数を他のExcelファイルで使おうとするとVBEを立ち上げてインポートしなければならない これは、マクロを入れたファイルをOneDrive等にアップロードして、他の人にダウンロードしてもらえばいいのでは❓。マクロを入れたワークブックを渡せば、VBE 等の操作は不要ですし、元々xlsmなので、上書き保存すればそれでいいです。 今回、既存関数でできましたが、できないものを渡すこともありうると思います。

Tofu-Yo
質問者

お礼

こちらのわがままなリクエストにお答えいただいて詳細なご説明ありがとうございます!助かります!そして勉強になりました!

Powered by GRATICA
Tofu-Yo
質問者

補足

お礼の補足です。配列数式が「{○○}」と記述しなくてもよくなっていたとは存じ上げませんでした!最近Excelが新しくなったばかりだったので全然気づいてませんでした。いただいた数式を見て配列っぽいとは思っていたのですが… そして、使われているひとつひとつの関数は知っていたのですがこのような使い方は目から鱗でした。私の知っている配列数式の作り方は実在するセル範囲に対して行うもので、ご教示いただいたように仮想の配列のような使い方ができることに驚きです。これは使いこなせれば今後かなり多くの応用ができること間違いありません。まだまだ勉強が足りませんでした。頑張ります。 また、VBAについてもアドバイスをいただき、恐縮です。ただ、…職場環境的にxlsmを開いただけで最初のメッセージにあたふたする方々の中にいますので、大変なのです…ですので数式をいただけて本当に助かりました。 ありがとうございました。

その他の回答 (7)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.8

回答№6で=INT(SQRT(C11))とお答えしました 添付図をご覧ください 1.Aを求める。  A=INT(SQRT(N)) 2.Bを求める  B=N-A^2

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.6

int()関数の入れ子にするのはどうでしょう =INT(SQRT(C11))

Tofu-Yo
質問者

補足

ご回答ありがとうございます。ですが、√Nの整数部分とは異なりますので残念ながらご教示の方法では求めたいものは得られません…

noname#258506
noname#258506
回答No.5

ごめんパートナーが勝手にアカウント削除してしまった noname#258475 なんか素人目せんだけど A列B列が1だったりすること多い気がするけど √16=4√1は√16=2√4もありなんじゃないかと思う。違ったらごめん○○なので許して 他の解で片方が1の場合でも他に解があるかもしれないぞということになってそれなら他の1じゃないのも1でいいんじゃね計算しなくていいんじゃね 〇〇な素人はそう思うのであります ちゃちゃでごめん

Tofu-Yo
質問者

補足

ルートの中が最も小さい形、言い換えるとA√BがNを割り切る最大の平方数の√ということを想定しています。

noname#258475
noname#258475
回答No.4

外野からごめん 整数N=A√B の整数Aと整数Bが知りたいということではない? √N=A√B √8は整数なの???

Tofu-Yo
質問者

補足

「整数Nに対して、√NをA√Bの形に直した場合」が正しかったです。おっしゃるとおりA√Bの整数Aと整数Bをエクセルの既存の関数で求める方法が知りたいという質問です。

  • SI299792
  • ベストアンサー率48% (715/1478)
回答No.3

A2: 整数を入力 B2: =MAX(INDEX(ROW(INDIRECT("1:"&INT(SQRT(A2))))*(MOD(A2/ROW(INDIRECT("1:"&INT(SQRT(A2))))^2,1)=0),)) C2: =A2/B2^2 画像はA列、C列に、表示形式、ユーザー定義 「√0」を指定 確認の為下へオートフィルしてあります。

Tofu-Yo
質問者

お礼

すごい!いただいた数式をそのままコピペしたらできました!ありがとうございます!

Powered by GRATICA
Tofu-Yo
質問者

補足

今後のため数式を解析しようと思ったのですが、つまづいてしまいました。もしよろしければどういう数式のつくりなのか簡単にご説明いただくことは可能でしょうか?

  • NuboChan
  • ベストアンサー率47% (745/1583)
回答No.2

個人的には、既存Excel関数だけを使用した数式では、無理だと思います。 Fanction形式なので関数定義と同様に利用できるので VBAの知識の無い人でも利用上困らないと思いますが? 求める事と違って既に「実はVBAを使用する方法では解決済」なら 他の方の回答をお待ちください。

Tofu-Yo
質問者

補足

やはり既存関数では無理なのかもしれませんね。念のため他の方の回答をもう少し待ってみます。 Function形式で私も作ってみました。問題なく作動はするのですが、他の人がこの関数を他のExcelファイルで使おうとするとVBEを立ち上げてインポートしなければならないことや、ファイル形式をxlsmにしなければならないことを考えると可能なら既存Excel関数を駆使して実現できないかと思ったわけです。 誤解を招かないようにマクロを対象外と書いたのですが、もっと詳細に事情を書いた方がわかりやすかったのかもしれません。

  • NuboChan
  • ベストアンサー率47% (745/1583)
回答No.1

以下のような事でしょうか ? Option Explicit Function Sqrt(N As Long) As String Dim i As Long For i = Sqr(N) To 1 Step -1 If N Mod (i ^ 2) = 0 Then Sqrt = i & "√" & N / (i ^ 2) Exit Function End If Next i End Function

Tofu-Yo
質問者

お礼

ご回答ありがとうございます。ですが、質問文にあるとおり、既存のExcel関数で実現する方法がないでしょうか?

Powered by GRATICA
Tofu-Yo
質問者

補足

実はVBAを使用する方法では解決済です。しかし、VBAの知識がない人でもファイルを共有できるようにするため、マクロを使わないで実現する方法を模索している次第です。わかりにくかったとしたらすみません。

関連するQ&A

  • 数A 集合

    【問題】 A={12m+8n|m∈Z、n∈Z}、B={4l|l∈Z}とする。 A=Bであることを示せ。 ただし、Z={整数全体} 私は A={12m+8n|m∈Z、n∈Z}  ={4(3m+2n)|m∈Z、n∈Z} ここで、3m+2n=lとおくと、A={4l|l∈Z}=B よって、A=Bが成り立つ としたのですが、解答では *-*-*-*-* x∈Aならば、ある整数m、nについて、  x=12m+8n=4(3m+2n)とあらわせる。 ここで、3m+2nが整数より、x∈Bが成り立つ。 したがって、A⊂B・・・(1) また、x∈Bならば、ある整数lについて、  x=4l=4(3-2)l      =12l+8・(-l)と表せる。 ここで、m=l、n=-lとおくと、m、nは整数で、x=12m+8nと表せるから、x∈A したがって、B⊂A・・・(2) (1)、(2)より、A=B *-*-*-*-* となっていました。 やはり、x∈A⇒x∈Bとx∈B⇒x∈Aを示し、必要十分性を確かめる解答にしなくてはいけないのでしょうか? やはり私の解答では証明したことにはならないのでしょうか?

  • アーランB式における回線数を求める方法(Excel)

    エクセル2003を使用しています。 VBAを使用せず、セル内に数式を入れることで、アーランB式による呼損率B、a:呼量から n:回線数を求める方法を教えていただけないでしょうか? アーランB式は以下です。 B = (a^n/n!)/(1+a/1!+a^2/2!+a^3/3!+・・・+a^n/n!) B:呼損率 a:呼量 n:回線数 よろしくお願いします。

  • 解き方

    a,b,c,nは正の整数であって、次の等式が成り立つ。a+b+c=(n+1)^2,a+b=n^2, b+c=(n-1)^2であるとき、a+cを6で割ったあまりが(ア)であり、さらにa+cがある整数の平方となるようなnの最小値は(イ)である。 という問に僕はこの様に考えました。 a+b+c=(n+1)^2,a+b=n^2,b+c=(n-1)^2より a=4n c=2n+1なので a+c=6n+1となり、これを6で割ると、商n・余り1よって(ア)=1 a+cがある整数の平方となるようなnの最小値は a+c=6n+1 n=1の時、7 n=2の時、13 n=3の時、19 n=4の時、25 したがって、n=4の時5の平方となるので最小値は(イ)n=4の時である。 この解き方であっていますか?

  • a(m).b(m).の一般式を教えてください。

    a(2)=5n-6 (n=2.3.4.5. ~ ) a(3)=11n-13 (n=2.3.4.5 ~ ) a(4)=17n-20 (n=2.3.4.5. ~ ) a(m)= ? b(2)=7n-8 (n=2.3.4.5. ~ ) b(3)=13n-15 (n=2.3.4.5. ~ ) b(4)=19n-22 (n=2.3.4.5. ~ ) b(m)= ? a(m)とb(m)の一般式を教えてください。

  • 2次方程式で根号内が完全平方

    2次方程式の解の公式で、根号内が完全平方でn>0としてn^2とおける理由がわからないので質問します。 4けたの整数で、その下2けたの数と上2けたの数との和の平方と等しくなるものを求めよ。という問題があって、 4けたの整数の上2けたの整数をA,下2けたの整数をBとすると、4けたの整数は 100A+Bとかけるから、題意によって次の方程式が得られる。100A+B=(A+B)^2 展開してAについて整理すると A^2-2(50-B)A+(B^2-B)=0 Aについて解けば、 A=50-B±√{(50-B)^2-(B^2-B)}=50-B±√(50^2-99B)・・・(1) Aは整数だから根号内は完全平方で、ここからがわからないところです。これをn^2(n>0)と置けば、・・・自分はn^2=±nだから(n>0)となる理由がわからないのです。B≧0,√n^2=|n|,Aについての2次方程式に対して、解と係数の関係など試してみたのですが、(n>0)とする理由、n≦0を除ける理由がわかりません。どなたかn>0とできる理由を教えてください。 解答のつづきは、n^2=50^2-99Bより 99B=50^2-n^2・・・(2) ∴ 3^2*11*B=(50+n)(50-n)ゆえに右辺は11の倍数となり 50+n,50-nの一方は11の倍数になる。50+nが11の倍数で、55,66,・・・,99のときのnの値をあげ、50-nが11の倍数で、44,33,22,11のときのnの値をあげ、(2)や(1)に代入し適当な整数になるものを選びます。答えは2025,3025,9801です。

  • 代数学 恒等式

    2つの連続する整数m,nの平方数の間にある、ある整数をNとして、X=N-m^2 Y=n^2ーNとするとき、N-XYが平方数であるという証明をしたいのですが、nをm+1として、m<N<m^2+2m+1としてN-XYを平方完成しようとしてみたのですが、どうしてもうまくいきません。教えていただけたら助かります。 よろしくお願いします。

  • n正の整数、a実数、すべての整数mで

    n正の整数、a実数、すべての整数mで m^2-(a-1)m+an^2/(2n+1)>0 を満たすaの範囲をnで表せ。 次のように考えました。 (1)判別式<0としましたが、mが実数だとこれで良いと思うが 整数なので、補正が必要になるので、しかもそれは煩雑なので この考えを捨てる。 (2)a>(2n+1)(m^2+m)/(2nm-n^2+n) ただし2nm-n^2+n<0 同様に2nm-n^2+n>0のときのグラフも考える。 とし、右辺のグラフから、そのグラフの最大値を考えようとしました。  しかし、これも収拾がつかない。 (3)因数分解ができないか、これはできない。 等々かんがえましたが、どんな解法になるのかわかりません よろしくおねがいします。

  • EXCEL2000の関数

    EXCEL2000でデータの整理をしています。 どういうデータかというと... A列にステップ数、B列に各ステップでのデータ(数値)が入っています。 このときデータの最大値にのときのステップ数を表示したい(最大値の隣のセルの数値を表示したい)のですが、どのような数式を入力したら良いのでしょうか?

  • a,bは互いに素な正の整数とする。

    a,bは互いに素な正の整数とする。 1、kを整数とするとき、akをbで割った余りをr(k)で表す。k,lをb-1以下の正の整数とするとき、k≠lならばr(k)≠r(l)であることを示せ。 2、am+bn=1を満たす整数m,nが存在することを示せ。 という問題ですが、どう考えたらよいのか分かりません…。 1の方は、akとalをそれぞれbs+r(k),bt+r(l)みたいに表してみたのですが、どう解いていけばよいのか…。 2もa(m-m(0))+b(n-n(0))=0,-(am(0)+bn(0))=1とおいてみたのですが…。 考え方だけでもいいので、教えて頂けたら嬉しいです。 回答宜しくお願いします。

  • 平方数でない整数の平方根は無理数であることの証明

    すみません。高齢者なので使用する文字はすべて正の整数とします。 整数の平方根で整数になるのは1,4,9,16のような平方数だけです。例えば5の平方根を考えた場合、 4の平方根は2、 9の平方根は3ですから、5の平方根は2と3の間の数となり絶対に整数にはなりません。以上は単なる確認です。 そこで平方数ではない整数をaとします。これの平方根を√aと表記します。確認通り√aは整数にはなりません。この非平方数の平方根が分数で表現できるかどうかが問題です。 √a=n/mと分数で表現できるとします。ここでnとmは互いに素であるとし、当然m≠1です。 両辺を2乗すると  a=n2/m2 となります。ここでaは整数です。n2とm2にも共通の約数はないので、n2/m2は整数にはなりません。すると左辺は整数、右辺は小数(小数点以下が0ではない純粋の小数)になるのでこれは矛盾です。従って平方数ではない整数の平方根は全て無理数である。 質問は、こんなに簡単な証明でいいのだろうか?基本的なところで考え方に穴があるのではないだろうか?ということです。ご教示願います。

専門家に質問してみよう