- ベストアンサー
Excel 2007でマクロを使って逆行列を求める方法
- Excel 2007でマクロを使って任意のn次の正方行列の逆行列をシートを介さずに求める方法を教えてください。
- 具体的な手順を教えていただけると助かります。
- シートに値がある場合は、RangeオブジェクトやWorksheetFunctionを使って逆行列を求められることが分かりましたが、シートを介さずに逆行列の要素を取得する方法を知りたいです。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- マクロの行列の掛け算ができません
エクセルでマクロ勉強中の初心者です。 マクロで行列A(3行4列)、行列B(4行2列)の掛け算のプログラム(下記)を作っているのですが 「インデックスが有効範囲にありません」というエラーメッセージが出てしまいます。 エクセルで関数(MMULT)で同様の計算をするときちんと計算できるのですが・・・。 どなたか教えてください。 よろしくお願いいたします。 Sub s1() ' 次元の設定 Dim A(3, 4), B(4, 2), C(3, 2) N1 = 3: N2 = 4: N3 = 3 ' データの入力 (行列AとBの設定) For I = 1 To N1: For J = 1 To N2 A(I, J) = Worksheets("s1").Cells(I, J) Next J: Next I For I = 1 To N2: For J = 1 To N3 B(I, J) = Worksheets("s1").Cells(I, J + 5) Next J: Next I ' ベクトルの内積 For I = 1 To N1 For J = 1 To N3 For K = 1 To N2 C(I, J) = C(I, J) + A(I, K) * B(K, J) Next K Next J Next I ' 結果の出力 For I = 1 To N1 For J = 1 To N3 Worksheets("s1").Cells(I + 6, J + 7) = C(I, J) Next J Next I End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルでのマクロが作れません
簡単なマクロ構文が作れなくて困っています。 セルA1、B1、C1・・・と約5000個続く1行のデータを9列のデータに並べ直すだけなのですが(A1、B1C1・・・I1、A2、B2、C2・・・I2、A3、B3、C3・・・というふうに)、当方マクロなど組んだこともなく、途方に暮れております。一応ネット等を参考にして、以下のようにある程度組んでみたのですが、全然動きません(泣)。 Sub Sample() Dim i Dim j Dim k For i= 1 to 5000 j= INT(i \ 10) k=(i Mod 10) Worksheets("Sheet1").[1,i] Copy Destination=Worksheets("Sheet2").Paste(1+J,k) Next i Sub.End どなたか、ご教示頂けませんか。 よろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- EXCELのマクロのシートを指定する方法
下記にあるEXCELのマクロは、以前こちらのサイトで教えて頂いたマクロです。 私の質問の仕方がまずかったのですが、シートが指定ではなくて、次のシートとなっています。 これを、1列の元データがシート2で新しく貼り付ける場所をシート1という風に変更したくていろいろやってみましたが、EXCELのマクロ自体、初心者で全然できませんでした…。 どなたか教えて頂けないでしょうか?よろしくお願いします。 下記のマクロは 【Excel2003でA列に1行にあるデータ(半角英数字)を次のシートに、1行ずつコピーして、それを5列に振り分けするというマクロです(ただし、コピーは2つずつの時もあります。) 元データ(これをシート2にしたい) ●A列 B列 C列 1 2 3 4 5 ・ ・ 加工後 (シート1に貼り付けたい) ●A列 B列 C列 D列 E列 1 1 2 2 3 3 4 4 5 5 『sub macro1() dim i as long, j as long, k as long dim n, m on error resume next k = application.inputbox("duplication", type:=1) if k = 0 then exit sub activesheet.next.range("A:E").clearcontents for n = 1 to range("A65536").end(xlup).row for m = 1 to k activesheet.next.cells(j + 1, i + 1).value = cells(n, "A").value i = (i + 1) mod 5 j = iif(i = 0, j + 1, j) next m next n activesheet.next.select end sub』
- ベストアンサー
- その他MS Office製品
- フランク行列の逆行列を求める問題で質問です。
フランク行列 a ij={ i (i≦j) 、 j (i>j) (iとjはaの添え字です) ただし、正方行列とする。 というものの逆行列を求めるもので、要素数がいくら大きくなっても書き換えが最小限で済むプログラムを作って、5×5行列のときにその逆行列を求めたいのですが、何回やっても思うようにいかずに、本当に困っています。どうか助けてください。お願いします。
- ベストアンサー
- C・C++・C#
- 至急お願いします。エクセルのマクロに関してです。
かなり至急です><エクセル2010のマクロの質問です。 2つ質問があります。 1つ目です。 以下の一連の作業を1つのマクロで行いたいのですが、どうしたらいいでしょうか? 現在は、シート1にデータがあります。 (1)選択した3列を、B~D列に移動する (2)B列に含まれるセルのうち、0(空白)でないセル数分だけシートを追加する。 (たとえば、シート1のB14~B18に数字がはいっていたら、シートを5枚追加するという感じです。) (3)B列に含まれるセルのうち、0(空白)でないセル数分に対し、2行ずつ各シートの3・4行目にコピーする。 (たとえば、シート1のB14~B18に数字がはいっていたら、シート2の3・4行にシート1の14・15行のコピーを貼り付け、シート3の3・4行にシート1の15・16行のコピーを貼り付け、シート4の3・4行にシート1の16・17行のコピーの貼り付ける・・・という感じです。) 現在は (1)Sub () Selection.Cut ActiveCell.Columns("A:C").EntireColumn.Select Selection.Cut Columns("B:B").EntireColumn.Select Selection.Insert Shift:=xlToRight End Sub (2) Sub Macro() Dim n As Long For n = 14 To 18 ' Sheets.Add Next End Sub (3) Sub Macro() Dim n As Long For n = 14 To 18 ' Sheets("Sheet1").Rows(n & ":" & n + 1).Copy _ Sheets("Sheet" & n - 252).Range("A3") Next End Sub と別々のマクロに分けてます。 また(2)(3)でみられる For n = 14 To 18 ' の部分の数字は手動でいれてますが、かなり時間をくってしまうので・・・。 2つ目です。 複数ブックに同じ動作をするエクセルのマクロが知りたいです。 現在100ほどブック(Book1~100)を開いていて、100のブックすべてのSheet1のA1のセルに「1」と入れたいのですが、 そのようなマクロはどうくんだらよろしいでしょうか。 ちなみにExcel2007です。 困っているので、お願いします。
- 締切済み
- その他MS Office製品
- エクセルのマクロについて
お手数ですが誰か教えてください! BのデーターをAに集計するマクロを作ったのですが 処理速度とっても遅いのです。 高速で処理する方法はありませんでしょうか? 私が作ったマクロ Sub 集計() Dim Z As Integer Dim i As Integer Dim X As Integer For Z = 2 To 2000 For i = 2 To 2000 For X = 3 To 20 If Worksheets("A").cells(Z, 1) = Worksheets("B").cells(i, 1) And Worksheets("A").cells(1, X) = Worksheets("B").cells(i, 14) Then Worksheets("A").cells(Z, X) = Worksheets("B").cells(i, 16) End If Next X Next i Next Z End Sub どこかが間違っている気がしますがマクロ初心者のため 先に進めません。 どうかご教授よろしくお願い致します。
- 締切済み
- Visual Basic
- Excel マクロ 値の転記
Excel マクロ 値の転記 Sheet2をSheet1に転記したいのですが、A列だけは3回同じ値を転記 するのには、※をどのように変えたらいいのでしょうか? 宜しくお願い致します。 〔Sheet1〕転記先 A B あ 10 あ 20 あ 30 い 40 い 50 〔Sheet2〕転記元 A B あ 10 い 20 う 30 え 40 お 50 Sub テスト() Dim i As Long For i = 1 To 30 '↓※ココをどう書いて良いのかが分かりません Worksheets("Sheet1").Cells(i, "A") = Worksheets("Sheet2").Cells(i, "A") Worksheets("Sheet1").Cells(i, "B") = Worksheets("Sheet2").Cells(i, "B") Next i End Sub
- ベストアンサー
- その他MS Office製品
- (4×4)行列の逆行列の求め方について
以下の問題がわかりません。 どなたか簡単な解き方がわかる方いらっしゃいませんでしょうか。 下の行列について、逆行列を求めなさい。 (4×4)行列で要素は以下。 a -b -c -d b a -d c c d a -b d -c b a 答えは、 1/(a^2+b^2+c^2+d^2)*(以下の要素の行列) a b c d -b a d -c -c -d a b -d c -b a 余因子行列を使って一つ一つの要素を16回計算すれば出るのですが、 時間がかかりすぎてしまいます。 何か良いやり方はないでしょうか。
- ベストアンサー
- 数学・算数
- エクセルVBAで複数シートにマクロ実行
エクセル2000です。 Sub 行列非表示() For i = 2 To 120 If Cells(i, "A").Interior.ColorIndex = 3 Then Cells(i, "A").EntireRow.Hidden = True End If Next i For n = 1 To 50 If Cells(1, n).Interior.ColorIndex = 3 Then Cells(1, n).EntireColumn.Hidden = True End If Next n End Sub 上記マクロを、シートAAAとCCCとEEEに実行する場合、 Sub test() Sheets("AAA").Activate Call 行列非表示 Sheets("CCC").Activate Call 行列非表示 Sheets("EEE").Activate Call 行列非表示 End Sub と書くよりももっとすっきり実行する方法は無いでしょうか? 各シートの非表示対象の行や列はそれぞれことなります。 また Sub 行列非表示 自体も、もっと効率的にやる方法はないでしょうか?
- ベストアンサー
- オフィス系ソフト
- Excel マクロ 重複チェックについて
Excel マクロ 重複チェックについて Sheet3のA列とB列に製品番号が入っています。 A列とB列を比較して、A列と同じ番号がB列に2個以上ある場合のみ C列にフラグ「1]を入れたいです。 Sub RetsuCheck() Dim i As Long Dim ws1 As Worksheet Set ws1 = Worksheets("Sheet3") '「Sheet3」シートでA列とB列の重複をチェック。 For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row If ws1.Cells(i, "A") = ws1.Cells(i, "B") Then ws1.Cells(i, "C") = 1 End If Next i End Sub 1個の場合には上記マクロで解決するのですが、 2個以上の場合にどうようなマクロを記載すればよいのか アドバイスを頂けませんでしょうか。 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
お礼
ご回答ありがとうございます。 Inverse Matrix の関数は使用しても問題ありません。 添付URLの 係数の逆行列 = WorksheetFunction.MInverse(係数) Range("I2").Resize(r, r).Value = 係数の逆行列 の「係数」及び「係数の逆行列」がRANGEではないとだめなのかという趣旨でした。 ですので、「係数」へ行列の配列の格納方法が分かれば解決しそうです。