[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 01/29 07:34 / Filesize : 283 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part22



1 名前:デフォルトの名無しさん mailto:sage [2011/11/27(日) 22:36:18.78 ]
01 pc11.2ch.net/test/read.cgi/tech/1054356121/
02 pc11.2ch.net/test/read.cgi/tech/1168308855/
03 pc11.2ch.net/test/read.cgi/tech/1180192018/
04 pc11.2ch.net/test/read.cgi/tech/1189814602/
05 pc11.2ch.net/test/read.cgi/tech/1197448064/
06 pc11.2ch.net/test/read.cgi/tech/1205231499/
07 pc11.2ch.net/test/read.cgi/tech/1212587819/
08 pc11.2ch.net/test/read.cgi/tech/1219673793/
09 pc11.2ch.net/test/read.cgi/tech/1228372971/
10 pc12.2ch.net/test/read.cgi/tech/1235332603/
11 pc12.2ch.net/test/read.cgi/tech/1241885130/
12 pc12.2ch.net/test/read.cgi/tech/1247566074/
13 pc12.2ch.net/test/read.cgi/tech/1254281104/
14 pc12.2ch.net/test/read.cgi/tech/1262748898/
15 pc12.2ch.net/test/read.cgi/tech/1271261239/
16 hibari.2ch.net/test/read.cgi/tech/1280045912/
17 hibari.2ch.net/test/read.cgi/tech/1289182437/
18 hibari.2ch.net/test/read.cgi/tech/1298240666/
19 hibari.2ch.net/test/read.cgi/tech/1305754555/
20 hibari.2ch.net/test/read.cgi/tech/1312435844/

前スレ:
Excel VBA 質問スレ Part21
hibari.2ch.net/test/read.cgi/tech/1316931607/

477 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:14:23.53 ]
>>476
何か問題でも?

478 名前:デフォルトの名無しさん [2011/12/29(木) 12:21:59.85 ]
もそっとくわしくおねがいしまふ

479 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:28:39.81 ]
.Delete

480 名前:デフォルトの名無しさん [2011/12/29(木) 12:32:12.17 ]
>>47 さんへでふ。 もそっとくわしくおねがいしまふ


481 名前:デフォルトの名無しさん [2011/12/29(木) 12:32:46.14 ]
>>475さんへです

482 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 12:40:41.34 ]
>>481
.Delete

483 名前:デフォルトの名無しさん [2011/12/29(木) 14:30:45.27 ]
>>466
本当にすみません。マクロを作るときは
マクロを選択して、名前を作って作成というボタンを押すんですよね?
それに466さんが張り付けてくれましたコードをそのまま入れましたら
できませんでした。。。


すみません。よろしくお願いします。

484 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 15:49:57.18 ]
>>483
1.シートの見出しタブを右クリックしコードの表示を選択
2.466のコードをコピペ
3.とりあえず動作確認

4.イベントマクロで検索
5.コードの意味を理解
6.そのままじゃ使い勝手悪いと思うので修正

485 名前:デフォルトの名無しさん [2011/12/29(木) 16:48:54.26 ]
Private Sub CommandButton1_Click()
Dim a, b, c As Single

c = 0
For b = 1 To 5
For a = 1 To 5
c = c + 3
Sheet.Cells(a, b).Value = c
Next
Next

d = 1
For b = 1 To 5
For a = 1 To 5
d = d + 1
Sheet.Cells(a + 10, b + 10).Value = d
Next
Next
End Sub



非常に簡単なんですが、シートに書き込むことができません。どうすれば
書き込めますか?
フォームを作って、クリックボタンを一つ作っています。



486 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 17:30:08.52 ]
>>485
僕も、シートに書き込むことができません。
どうすれば書き込めますか?

Private Sub CommandButton1_Click()
Dim a As Integer, b As Integer, c As Integer

c = 0
a = 1
b = 1
Sheets("Sheet1").Cell(a, b).Value = c

End Sub



487 名前:デフォルトの名無しさん [2011/12/29(木) 18:43:31.84 ]
ありがとうございます。
Private Sub CommandButton1_Click()
Dim a, b, c, d As Single

c = 0
d = 1
For b = 1 To 5
For a = 1 To 5
c = c + 3
Sheets("Sheet1").Cell(a, b).Value = c
d = d + 1
Sheets("Sheet1").Cell(a + 10, b + 10).Value = d
Next
Next
End Sub



上記のとおりにやりましたが、それでも、
Sheets("Sheet1").Cell(a, b).Value = c


の部分にエラーが出てしまいます;

488 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:24:38.06 ]
>>483
標準モジュールに作ってない?
WorkSheetの関数として実装するんだよ?

489 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 19:25:13.73 ]
>>487
いや、だから僕も書き込めないんだって…

× Sheet.Cells(a, b).Value = c
× Sheets("Sheet1").Cell(a, b).Value = c

でも↓はOKなのはなぜ?

Private Sub CommandButton1_Click()
Dim c As Integer

c = 0
Sheets("Sheet1").Cells(1, 1).Value = c

End Sub

490 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:13:23.66 ]
エラーメッセージを読むことを覚えよう

491 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:19:06.38 ]
Cell(a, b).Value = c

Cell じゃなくて
Cells だろ?

492 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:25:51.15 ]
エラーメッセージなんて読んでも意味わかんねーし
つべこべ言わずに答えを教えろやカス
お前らそれくらいしか取り柄がないんだろ?

493 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:40:38.71 ]
>>492はにせものです

494 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 20:44:04.22 ]
(でも本音です)

495 名前:デフォルトの名無しさん [2011/12/29(木) 21:04:15.31 ]
行列の掛け算同士って
for構文を使うのだと思いますがどうすればよいのでしょうか?
試行錯誤するのですが非常に複雑です。。。



496 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:06:45.45 ]
>>492
> エラーメッセージなんて読んでも意味わかんねーし

エラー箇所でF1押してヘルプを読むのは役に立つと思うけどな


497 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 21:14:23.88 ]
>>495
何をやりたいのかわからんが
Worksheetfunction.MMult
じゃ駄目なのか

498 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:15:20.75 ]
Dim i As Long, j As Long
Dim V(1 To 2, 1 To 2), VV(1 To 2, 1 To 2)
Dim VVV

For i = 1 To 2
For j = 1 To 2
V(i, j) = i
VV(i, j) = j
Next j
Next i

VVV = WorksheetFunction.MMult(V, VV)
Debug.Print WorksheetFunction.Index(VVV, 1, 2)

499 名前:デフォルトの名無しさん mailto:sage [2011/12/29(木) 23:16:42.15 ]
>>495
4行4列くらいまでならべた書きの方が速い

500 名前:デフォルトの名無しさん [2011/12/30(金) 06:45:51.03 ]
>>499
4行4列ではなく、要素によって変わってくるため、
恐らく20行前後になってくると思います。。。


501 名前:デフォルトの名無しさん [2011/12/30(金) 08:01:37.33 ]
>>498
すみません。ありがとうございます。
worksheetfunctionではなく、他の方法でできますか?
Function MProd(X() As Double, Y() As Double) As Double()
'行列の積を計算する関数
'2009/07/10 山田宏
Dim m1 As Integer, n1 As Integer, n2 As Integer
Dim i As Integer, j As Integer, h As Integer
Dim tmp As Double, Z() As Double
m1 = UBound(X, 1): n1 = UBound(X, 2): n2 = UBound(Y, 2)
ReDim Z(1 To m1, 1 To n2)
For i = 1 To m1
For j = 1 To n2
tmp = 0
For h = 1 To n1
tmp = tmp + X(i, h) * Y(h, j)
Next h
Z(i, j) = tmp
Next j
Next i
MProd = Z
End Function

調べたらこれが出てきましたがまったくわかりません。。。

502 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 08:39:20.75 ]
>>501
worksheetfunctionで結果がでるならそれでいいじゃない
なんか問題あるの?

もしも 万が一 宿題なら自分でやろうぜ
あと
>>2 ★5 な

503 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 08:42:37.47 ]
行列の積の計算手順と、最低限度のプログラミングが理解できていれば、
悩むことではないと思うのだが。

504 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 08:57:12.87 ]
>>503
ttp://blogs.itmedia.co.jp/magic/2011/12/6886-2d5b.html

505 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 09:39:02.37 ]
>>501
わからないならエクセルにまかせりゃいいじゃん
↓ならわかるだろ

Function MProd2(X() , Y() )
Dim Z
Z = WorksheetFunction.MMult(X, Y)
MProd2 = Z
End Function



506 名前:デフォルトの名無しさん [2011/12/30(金) 09:41:47.52 ]
すべてのシートに同じ処理をするマクロで
For Eachの入れ子で組んだら上手くいきません

For Each sh In Worksheets
Columns("AA:AR").Select
For Each c In Selection
Case "1"
c.Interior.ColorIndex = 7
Select Case c.Value
End Select
Next c
Next sh

507 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 09:46:42.32 ]
それはたいへんですね。ごしゅーしょーさまです。

508 名前:デフォルトの名無しさん [2011/12/30(金) 09:49:00.68 ]
>>504

そのリンク先が>>503と何の関係が有るのかは分からないけど、
今の教育現場が酷いことになってるのは分かった。


509 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 09:55:32.45 ]
>>506
構文でたらめじゃねーか
でも並べかえれば動きそうな気がするし
さて、おちょくられているのかな

510 名前:デフォルトの名無しさん [2011/12/30(金) 10:03:24.56 ]
>>506
sh.activate追加で

511 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 10:20:57.78 ]
>>504
単位を省略しなければどちらも正解

○ 6本/人 × 8人=48本
○ 8人 × 6本/人=48本
? 6本 × 8人=48?
? 8人 × 6本=48?

512 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 10:30:47.97 ]
きっとその先生はCPU のbit数を意識して、演算結果が飽和しないように式を組む癖を叩き込みたいんだと思いますん。

513 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 10:50:54.62 ]
ふつーCPUの演算では飽和しません

514 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:05:36.54 ]
セル番地を指定するのにrangeとcellsが混在しているとみっともないでしょうか

515 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:26:10.43 ]
ユーザーフォームにラベルとテキストボックスを配置しました。
フォントは同じでサイズも同じですが
高さがズレて表示されます。

見た目の高さを揃えるにはどうしたらよいですか。
よろしくお願い申し上げます。



516 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:31:12.49 ]
>>514
そもそもcellsはrangeを返すプロパティ
これを踏まえてどう思うか

517 名前:デフォルトの名無しさん [2011/12/30(金) 11:39:08.66 ]
>>516
偉大な>>514様は、例えば左上のセルを Cells(1,1)と書くのとRange("A1")と書くことの違いが分かっておられないと思う。
その説明じゃなんのことは分かりやすく伝えてないから、説明になってないと思うぞ。
もう少し分かりやすく説明して差し上げたら?

518 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:39:41.44 ]
>>509
この構文のどのへんがだめなんでしょうか
よろしかったら教えてください

519 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:51:51.00 ]
>>518
条件付き書式でいいんと思うんだがCase "1"とSelect Case c.Valueが逆だろ?
Case "1"よりはCase 1だと思うが

520 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 11:53:14.65 ]
それにたった一つの分岐ならSelect Case使うまでもねーな。
Ifで充分。

521 名前:デフォルトの名無しさん [2011/12/30(金) 11:58:18.99 ]
>>519
逆と言われて、こうしたりして

Select Case c.Value
c.Interior.ColorIndex = 7
Case "1"
End Select

522 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:02:35.62 ]
そうだな。
まぁ色々と並べ替えてやってみんしゃい。
それにしてもAA:ARのすべてのセルを調べるのもなんだかねぇ。
せめてUsdRangeとの共有セルにした方がいいと思うね。

523 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 12:52:16.18 ]
もしかして、Excel2007以降だと104万行全部調べる羽目になるの?

524 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 14:30:32.28 ]
104万8576行*18列*シート数だね
おわりゃしねえ

525 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 15:30:07.14 ]
3シートでやってみた。たしかにそうだ (^-^*)



526 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:09:50.25 ]
急いでます。

=PRODUCT(A1:B1)
=PRODUCT(A2:B2)

と同様に一気に計算する方法ってどうやるんですか?

527 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:22:07.30 ]
>>526
とりあえず落ち着きんっさい

528 名前:デフォルトの名無しさん [2011/12/30(金) 22:26:13.26 ]
Excelだと、スロットゲームとか作れそうだけど、
どこかにサンプルないかな?
お勉強にしたい。

529 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:44:33.57 ]
● 2005年5月23日号 file NO.004 イカサマ・スロットマシンを作れ
pc.nikkeibp.co.jp/npc/download/excel_taskforce.html

530 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 22:47:37.64 ]
テーブルからの検索でなるべく早い方法ってなんでしょうか。データ量によりいろいろ方法あると思いますが。
特に列二つか三つに一致するデータを検索する使い方が多いのでvlookupは普段使ってません。

とりあえず上から順に検索
for i = 2 to .cells(rows.count,1).end(xlup).row
if .cells(i,1).value = ID then
if .cells(i,2).value = Name then
処理
exit for
end if
end if
next

上のやり方が遅すぎるので配列に代入してから。上のやり方より遥かに早くなったので
現状この方法を多用。
Dim Rng as variant
rng = .UsedRange
for i = 2 to Ubound(Rng)
if Rng(i,1) = ID then
if Rng(i,2) = Name then
処理
exit for
end if
end if
next

もっと早い方法あれば何かキーワードだけでもヒントお願いします。
上の方法だと5000〜1万件になるとちょっと実用できなさそうなので。
findやVlookupは知ってますが2列で一致するような使い方が出来なくて。


531 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:18:26.87 ]
Accessとか使った方がいいんじゃない

532 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:19:05.88 ]
検索した上で何がしたいのかによる

533 名前:デフォルトの名無しさん mailto:sage [2011/12/30(金) 23:28:11.74 ]
>>530
検索キーの構造が単純なら、キーを結合した上でVLOOKUPするとか。
この場合だと、IDとNameをそれらで絶対に使われない文字を挟んで繋いでやれば
単一キーとして利用できる。

534 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:00:19.43 ]
WinXP Excel2000で作っていたときは問題なく動作をしていたのですが
Win7 Excel2010で実行すると
エラー番号1004'Range'メソッドは失敗しました'_Global'オブジェクト
とでました
問題の箇所は
UserForm2.Show vbModeless
ここです
コード自体は間違っていないと思うのですが環境の変化によって何が変わりエラーがでたのでしょうか

535 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 00:08:41.33 ]
どっかでみたコピペだな



536 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 01:54:14.77 ]
コピペじゃなくて真剣に悩んでます

537 名前:530 mailto:sage [2011/12/31(土) 02:16:34.54 ]
ありがとう
>>533
ワークシート関数で作業列で結合してそれでVLOOKUP使ってるのを見た事
ありますがそういう事ですね。

>>532
この質問では何がという特定の目的はありませんでした。ほかの検索方法
があれば知りたいなと思って。

>>531
アクセスっぽい事をエクセルでやりたいのです。どの会社行ってもエクセル
は必ずあるけどアクセスはあんまり見ないですし。

538 名前:デフォルトの名無しさん [2011/12/31(土) 02:50:44.07 ]
ただ検索して知りたいだけなら、VBA使わずに手動でオートフィルタだが。
VBAでオートフィルタって手もあるけど。だからどういうことをやりたいのか聞いた。

539 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 03:33:04.00 ]
エクセル97のおんぽろ会社PCで400行×20列くらいのデータ抽出を
数式のコピペだけでやって10秒ほど?で出来てるけどそれより早いなら解からん

540 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 09:24:49.34 ]
>>537
AccessなしでもAccessデータベースを扱うことは可能
他にもタダで使えるデータベースはあるから使い途によっては選択肢に入れてもいいかもね
でもいろいろ敷居が高いかな

541 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 10:23:56.08 ]
>>540
ようするに会社のパソコンで必ず使える物ならいいのでエクセルで無理やり頑張るより無料のデータベース
勉強する方が良いかもしれないですね。

542 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:04:55.91 ]
現状の配列方式で5000〜1万件ってそんな時間かかるものなん
条件合致したら、ループ抜けるんだよね?処理は1回だけ

543 名前:デフォルトの名無しさん [2011/12/31(土) 11:57:37.43 ]
エクセルの表に対してADO&SQLつかえば?

544 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 11:58:53.89 ]
遅いよ

545 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 12:00:28.32 ]
>>544
うん、わかった



546 名前:530 mailto:sage [2011/12/31(土) 13:48:33.96 ]
>>542
ダミーデータ1万行まで入れて一番下に入れた文字を検索してみたら0.015秒でした。
十分早いですね。
検索回数増えないようにロジック考えればこの方法で十分なんですね。


オートフィルタとか使わずに検索を一度に何十回とか繰り返してたのでそもそもそのへん
を考え直すべきなんですね。


547 名前:デフォルトの名無しさん [2011/12/31(土) 20:54:03.70 ]
下記はどう使い分けるのが適切でしょうか?

vbCR
vbLF
vbCRLF
vbNEWLINE

548 名前:デフォルトの名無しさん mailto:sage [2011/12/31(土) 21:58:56.52 ]
vb.netで質問です
trackbar1のvalueからpicturebox1のbackcolorのレッドの濃淡を出したいのですが
trackbar1のvalueはinteger(0−255)にしています。
Public Sub TrackBar1_Scrollするとtrackbar1.valueから0の場合picturebox1のバックカラーは一番薄い色に(白か初期の灰色に)
逆に255ならばtrackbar1のバックカラーはどす黒いredにしたいのですが…

まず濃淡を出すこと自体可能なのでしょうか。。。


スレ違いと言うことは重々承知しております。vb.netスレが検索してもないもので。。。

お願いします。

549 名前:デフォルトの名無しさん [2011/12/31(土) 22:05:09.51 ]
toro.2ch.net/test/read.cgi/tech/1325083428/

550 名前:デフォルトの名無しさん [2012/01/01(日) 02:14:28.71 ]
選択範囲を全て罫線を引くのは下記で出来ますが
Selection.Borders.LineStyle = True

例えば
一番上と下のラインを以外の横の罫線を点線にしたい場合って
どうすればいいのでしょうか?
一応マクロの記録でやると何十行もの内容が出てる来たので
それは避けたいのですが

551 名前:デフォルトの名無しさん mailto:sage [2012/01/01(日) 03:19:29.13 ]
全部書いてから横罫線だけ上書きするとか

Selection.Borders.LineStyle = xlContinuous
Selection.Borders(xlInsideHorizontal).LineStyle = xlDash


552 名前:デフォルトの名無しさん [2012/01/02(月) 09:58:08.79 ]
あけましておめでとうございます。
行列のことで質問したものです。
再度整理して、再質問します。
octave系のプログラミングソフトでは、行列表示は
a=[2 2;5 5]
などで表せます。
逆行列は、inv(a), また、転置行列は、a'で表せます。

Excelでは、
1.a=0 とまず、空の成分を置いて、
b=0
for i=1 to 10
for k=1 to 10
b=b+1
a(i,k)=a(i,k)+b
next i
next k
のように置くことは可能でしょうか?
つまり、例えばですが、
a(1,1)の部分には1が入り、a(2,2)の部分には2,また上の例には
対応していませんが、a(1,2)には3や4などといった数字が入り…といった感じです。


よろしくお願いします。

553 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:23:58.46 ]
馬鹿には無理

554 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:27:47.75 ]
試せばわかる

for i=1 to 2
for k=1 to 2
debug.print a(i, k)
next k
next i

555 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:35:11.16 ]
>>552
整理してそれかい
小学校からやり直せ



556 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:40:20.99 ]
2行2列で足し算
掛け算でなかったっけ?

For i = 1 To 2
For k = 1 To 2
a(i, k) = 1
b(i, k) = 2
c(i, k) = a(i, k) + b(i, k)
Next k
Next i

557 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 11:43:00.70 ]
iとkなのが気持ち悪いんだが

558 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 14:35:23.95 ]
>>552

新しく質問する前に前回の質問にケリ付けとこうよ。
>>502が聞いてたWorksheetFunctionを避けたい理由とか、
>>501で紹介していたFunctionの何が童話からないのかとか、
一切説明ないじゃん。
自分が分かればそれで良いってのは虫が良すぎるんじゃないの?

559 名前:デフォルトの名無しさん [2012/01/02(月) 15:05:35.05 ]
>>558
大変申し訳ございません。
worksheetfunctionを避けたい理由としましては、excelではなく
visual studio(ほとんど同じコードだと思います)でも使いたいので、
応用させたいと思っています。
また、501に関しては、Z() と最初においていますが、
これにより、
z(1,1)=5 , z(1,3)=4 , z(2,1)=3と打つと、
例えばですが、z(1,3)に入っている数字は4ということなんでしょうか?


560 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 15:42:01.97 ]
>>559
そういうこと
>>501は、行列の要素を1個ずつ計算しZ(i, j)に格納している

561 名前:558 mailto:sage [2012/01/02(月) 15:51:07.30 ]
>>501のは2つの引数X(),Y()で与えられた2次元配列について行列積を求め、MProd()で返す関数
まず、m1,n1,n2,は行列の大きさを格納するための変数
m1 = Xの行数,n1 = Xの列数 = Yの行数(もし違ってたら行列積の計算ができない),n2 = Yの列数
i,j,h,はFor next のためのカウンターの変数
tmpは各要素の計算結果を一時的に格納する変数
Z()は最終的な計算結果を格納する配列変数
UBound(X,1)はX(a,b)のaの個数の上限を求めるもので
UBound(X,2)はX(a,b)のbの個数の上限を求めるもの
UBound(Y,2)も同様にY(a,b)のbの上限になる

行列の大きさが分かったので
結果を入れるZ()をRedimでm1行、n2列に再定義して
m1,n2,n1,の順にネストしてループをまわす。
一番内側のhのループ内でX()i行目の各列とY()j列目の各行との要素の積を一個ずつtmpに合算していくと、
Z(i,j)の要素が求まるのでZ()に代入
これをその外側の2つのループでi,jを変えながら繰り返すとZ()の全要素について求まる。
最終的にZ()をMProd()に代入して処理完了

562 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 16:15:52.66 ]
>>2 ★2 ★3 ★4

563 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 16:21:30.23 ]
>>552
> a(1,1)の部分には1が入り、a(2,2)の部分には2,また上の例には
> 対応していませんが、a(1,2)には3や4などといった数字が入り…といった感じです。

どうしてそうなると考えたのか?

564 名前:デフォルトの名無しさん [2012/01/02(月) 16:35:00.75 ]
>>563
確かに行列積の計算方法そのものはわかってるとすると>>552が理解できれば>>501も理解できるのかもね。

565 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 17:49:32.42 ]
VBA以外触ったこと無いから分からないのですがクラスとはどういう時に使うものですか?



566 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 18:50:19.08 ]
中二病の発作を起こした時に作ってみるもの。
クラスにするまでも無かったと我に返ってコードを投げ捨てることも多い。

567 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:28:21.82 ]
XMLHttpRequestを使ってページの差分取得をしようと思ったのですが

Set XMLhttp = CreateObject("MSXML2.XMLHTTP")
XMLhttp.Open "GET", URL, Flase
XMLhttp.SetRequestHeader "If-Modified-Since", LastTime 'LastTimeにLast-Modified格納している
XMLhttp.SetRequestHeader "Accept-Language", "ja"
XMLhttp.SetRequestHeader "Accept-Encoding", "gzip"
XMLhttp.SetRequestHeader "Connection", "close"
http.Send

これでResponseBodyを見たところ全てのデータが含まれていました
上記のコードは正しくヘッダーがセットされていますか?

568 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:29:07.19 ]
最終行のhttp.SendはXMLhttp.Sendの間違いです

569 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 19:53:32.95 ]
もはやExcelと何の関係もないな…

570 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:11:48.40 ]
>>567
スレチ

If-Modified-Sinceは差分取得するもんじゃない
指定したLastTime以降更新されてなければ "304 Not Modified"が返る

と言う事で ここでは これ以上聞いてもスルーする

571 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:38:19.33 ]
>>567の件はぜんぜん分からないからスレチでなくとも俺は答えられないけど、
ちょっと便乗で質問。
ExcelのVBAでWebブラウザ制御するのって自動巡回扱いになるの?
この前仕事で某官庁のHPから統計データを引っ張るためにマクロ組んだら
上司にそれは自動巡回だからやっちゃだめって怒られた
(某官庁のHPには自動巡回ソフトの使用はご遠慮くださいって書いてあった)

IEをCreateObjectしてURLを自動的に生成(対象データの年度の部分を動的に変えるだけ)
して
表示されたらExecWBでSelectAll、Copy、して
クリップボードから.PasteSpecial でワークシートに貼り付けただけなんだけど、
そういうのも自動巡回ソフトに当たるんだろうか?
こんなの手作業をマクロに書き換えただけじゃんねぇ?

572 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:48:30.88 ]
手動じゃないなら自動でしょ

573 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 20:53:04.69 ]
>>572
いや、そういう意味じゃなくて自動巡回ソフトってサーバーに負担かけるからだめなんでしょ?
手作業でできることをマクロ化したところでサーバーにかかる負担なんて変わらないよねってこと
(一応、念のために適当にウェイトかまして速くならないようにはしてた。)

574 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:07:27.85 ]
わからんでもないが、それは配慮。
遠慮してくれってんだから、だめでしょ、やっぱり。

575 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:19:46.08 ]
手作業をマクロ化って自動化そのものじゃんねぇ?



576 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:26:20.81 ]
ねぇねぇ、思いつきだけど言って良い?




自動ポルノ。

577 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 21:35:58.88 ]
>>573
そう思うのならその某官庁とやらに説明して許可もらえばいいじゃん
そうでもしないと上司を納得させられないんじゃないの?

こんな所でグダグダ言ってても意味ないよ
スレ違いどころの話じゃないし






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<283KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef