ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part52
http://mevius.5ch.net/test/read.cgi/tech/1517052305/
探検
Excel VBA 質問スレ Part53
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/04/27(金) 19:02:38.39ID:+ocy8bIv798デフォルトの名無しさん
2018/05/10(木) 06:42:21.45ID:n6BTi4dI >>796
ピンポイントで〇〇の関数を2010で使いたいと言うならまだしも2013/2016の関数って一言で言われてもなぁ
ピンポイントで〇〇の関数を2010で使いたいと言うならまだしも2013/2016の関数って一言で言われてもなぁ
799デフォルトの名無しさん
2018/05/10(木) 06:45:52.61800デフォルトの名無しさん
2018/05/10(木) 08:15:00.88ID:/JKhPozC801デフォルトの名無しさん
2018/05/10(木) 10:09:42.27ID:1RQmg1q/ 答えがついてもろくに反応しない質問者がいるからQA以外の話題で盛り上がる
ってのは本当だな
ってのは本当だな
802デフォルトの名無しさん
2018/05/10(木) 10:46:30.23ID:JA/wCecl803デフォルトの名無しさん
2018/05/10(木) 13:58:29.65ID:IeALN+vJ804デフォルトの名無しさん
2018/05/10(木) 13:58:57.48ID:IeALN+vJ805デフォルトの名無しさん
2018/05/10(木) 14:05:11.32ID:IeALN+vJ806デフォルトの名無しさん
2018/05/10(木) 14:06:13.75ID:IeALN+vJ >>805
あれ、安価ミス。799への回答でした。
あれ、安価ミス。799への回答でした。
807デフォルトの名無しさん
2018/05/10(木) 15:30:36.46ID:QBpsjCo6 SQLiteでいいじゃん
808デフォルトの名無しさん
2018/05/10(木) 16:51:36.95ID:jLma9UA8809デフォルトの名無しさん
2018/05/10(木) 17:47:50.99 >>805
このへん見るに、かなり高速化できそう
まあループよりハッシュのほうがそりゃあ圧倒的に速いに決まってるけど
https://excel-ubara.com/excelvba4/EXCEL268.html
このへん見るに、かなり高速化できそう
まあループよりハッシュのほうがそりゃあ圧倒的に速いに決まってるけど
https://excel-ubara.com/excelvba4/EXCEL268.html
810デフォルトの名無しさん
2018/05/10(木) 17:54:52.83ID:7DjALtvb エクセルマクロはやりたい放題なのにセキュリティとか片腹痛いわ
811デフォルトの名無しさん
2018/05/10(木) 19:14:27.72ID:39NqoQfJ Excel VBAで悪意のあるもの作るには本人の意思が必要。
外部ソフト入れるなら意図しないものが混入する可能性がある。
これぐらい理解できないのか?
外部ソフト入れるなら意図しないものが混入する可能性がある。
これぐらい理解できないのか?
812デフォルトの名無しさん
2018/05/10(木) 19:26:28.88ID:NzRSgzkJ オプソならすっきり解決
813デフォルトの名無しさん
2018/05/10(木) 20:08:04.83ID:F9pCnCSA >>811
内部犯やチョンボを考えられないあたりが事務員さんって感じで微笑ましい
内部犯やチョンボを考えられないあたりが事務員さんって感じで微笑ましい
814デフォルトの名無しさん
2018/05/10(木) 21:33:49.65ID:n6BTi4dI >>811
怪しいサイトからダウンロードするならまだわかるけどメジャーなオプソでそんなコードが見つかったら祭りになるわ w
怪しいサイトからダウンロードするならまだわかるけどメジャーなオプソでそんなコードが見つかったら祭りになるわ w
815デフォルトの名無しさん
2018/05/10(木) 21:36:46.67ID:w2ga1e/f EXCELはWebシステムみたいに外部と繋がってないから
比較的被害は小さくて済むよね
でも以前仕事場で
内部にファイル勝手に消えたり
外部接続の無い環境でウイルスらしきものが見つかったりしたことがあって
上の人から秘密裏に頼まれてファイル監視システム作ったこともあったな
比較的被害は小さくて済むよね
でも以前仕事場で
内部にファイル勝手に消えたり
外部接続の無い環境でウイルスらしきものが見つかったりしたことがあって
上の人から秘密裏に頼まれてファイル監視システム作ったこともあったな
816デフォルトの名無しさん
2018/05/10(木) 21:39:40.05ID:39NqoQfJ817デフォルトの名無しさん
2018/05/10(木) 21:58:33.12ID:F9pCnCSA818デフォルトの名無しさん
2018/05/10(木) 22:00:56.75ID:39NqoQfJ819デフォルトの名無しさん
2018/05/10(木) 22:39:02.43ID:n6BTi4dI820デフォルトの名無しさん
2018/05/10(木) 22:49:26.50ID:qtzmRLVh >>819
オマエが判断するのかよw
オマエが判断するのかよw
821デフォルトの名無しさん
2018/05/11(金) 00:26:28.42ID:Nk9NYlAC 揚げ足の取り合いというか、マウント合戦というか
油断するとすぐ始まるw
油断するとすぐ始まるw
822デフォルトの名無しさん
2018/05/11(金) 00:34:08.57ID:DwsuJYIZ823デフォルトの名無しさん
2018/05/11(金) 01:02:06.52ID:gtt7+D13 色んなソフトがAPI公開してexcelと連動して、みたいなこと言ってるけど実際やってる人いる?
わざわざエクセルから操作する必要性が分からない
わざわざエクセルから操作する必要性が分からない
824デフォルトの名無しさん
2018/05/11(金) 04:46:34.78ID:Seo60ZfW >>823
昔、カルテサーバから翌日の輸血オーダ情報を取得して、ちょっと複雑にレイアウトしたTEPRAフォーマットに流し込んで、ハーフカットで輸血ラベルをジャンジャン印刷するのを作った記憶が。
あんまりたいした内容じゃなかった気がするけど。
それこそExcel必要?って言われるかもだけど、現場受けはよかったような。
昔、カルテサーバから翌日の輸血オーダ情報を取得して、ちょっと複雑にレイアウトしたTEPRAフォーマットに流し込んで、ハーフカットで輸血ラベルをジャンジャン印刷するのを作った記憶が。
あんまりたいした内容じゃなかった気がするけど。
それこそExcel必要?って言われるかもだけど、現場受けはよかったような。
825デフォルトの名無しさん
2018/05/11(金) 05:04:34.87ID:stSNQlqp826デフォルトの名無しさん
2018/05/11(金) 06:51:44.72ID:CplZ+xhH >>824
SPC9-APIとか使ってたなら.csvファイル経由でデータを渡すからExcel使うのはある意味自然だと思う
SPC9-APIとか使ってたなら.csvファイル経由でデータを渡すからExcel使うのはある意味自然だと思う
827デフォルトの名無しさん
2018/05/11(金) 06:52:25.93ID:CplZ+xhH828デフォルトの名無しさん
2018/05/11(金) 07:49:28.76ID:gtt7+D13829デフォルトの名無しさん
2018/05/11(金) 08:33:12.57ID:OTx54W6B PSキチガイもいなくなってひと段落といったところか
何か前他の板でもPSはキチガイ独占みたいなのを見たことがあった
それは多分PowerShellとは違うPSなんだろうけど
得てしてPSと言うのはそんなんばっかだってことだろうな
何か前他の板でもPSはキチガイ独占みたいなのを見たことがあった
それは多分PowerShellとは違うPSなんだろうけど
得てしてPSと言うのはそんなんばっかだってことだろうな
830デフォルトの名無しさん
2018/05/11(金) 08:45:45.24ID:xisUVEWN 何一つ言い返せなかったけどそれじゃ悔しいから敵が去った後に負け惜しみを言う人w
831デフォルトの名無しさん
2018/05/11(金) 08:45:45.76ID:RS6TTfPa >>829
お前も消えろ
お前も消えろ
832デフォルトの名無しさん
2018/05/11(金) 11:08:18.88ID:Pz/tQeeR シート1のA44:I44のセルを、マクロでシート2の最後列に貼り付けていきたいです。
下記のマクロだと、シート1のA44のセルをシート2の最後列のAのセルにのみ、コピーするだけになってしまいます。
どう変更すればいいのか、よかったら教えて頂きたいです。
よろしくお願いします。
Sub テスト()
Dim LastRow As Long
With Worksheets("シート2")
LastRow = Worksheets("シート2").Range("A"&Rows.Count).End(xlUp).Row + 1
Range("A"&LastRow).Value=Worksheets("シート1").Range("A44:I44").Value
End With
End Sub
下記のマクロだと、シート1のA44のセルをシート2の最後列のAのセルにのみ、コピーするだけになってしまいます。
どう変更すればいいのか、よかったら教えて頂きたいです。
よろしくお願いします。
Sub テスト()
Dim LastRow As Long
With Worksheets("シート2")
LastRow = Worksheets("シート2").Range("A"&Rows.Count).End(xlUp).Row + 1
Range("A"&LastRow).Value=Worksheets("シート1").Range("A44:I44").Value
End With
End Sub
833デフォルトの名無しさん
2018/05/11(金) 11:49:30.00ID:WIuYiP4/ VBA エキスパート スタンダードより難しい資格ってありますか?
834デフォルトの名無しさん
2018/05/11(金) 12:16:30.12ID:hascnQXs >>833
えんべでっどすぺしゃりすと
えんべでっどすぺしゃりすと
835デフォルトの名無しさん
2018/05/11(金) 12:17:44.23ID:Pz/tQeeR836デフォルトの名無しさん
2018/05/11(金) 12:41:09.45ID:HsLVJmEf >>834
VBAのスレで聞いてるんだからVBAの資格ってことだってわかるだろw
VBAのスレで聞いてるんだからVBAの資格ってことだってわかるだろw
837デフォルトの名無しさん
2018/05/11(金) 13:06:15.00ID:udjF1/Ux >>836
最近はpowershellの話題も取り扱うようになったからそっちの資格かもしれない
最近はpowershellの話題も取り扱うようになったからそっちの資格かもしれない
838デフォルトの名無しさん
2018/05/11(金) 19:31:54.26ID:cdAz752k 入力ヴァリデーションのやり方を教えてください
表形式のデータで1行1エンティティです
入力長さ、最小最大値、正規表現パターンなど基本的なカラムごとに独立したヴァリデーション
開始日終了日の順序などのエンティティ内の複数カラムにまたがるヴァリデーション
REST APIでサーバーに問い合わせる非同期ヴァリデーション
集計値の最大値やリレーションの存在確認など表全体のヴァリデーション
を行いたいです
入力が止まるとUXが悪化するのでエラーメッセージはメッセージボックスで表示したくありません
一定時間で消えるかフォーカスすると消滅する吹き出しのようなコントロールが理想です
これらを可能な限り宣言的にかつGUIからのチマチマとした面倒な設定は無しで実装したいです
REST APIや表全体のヴァリデーションの実体はUIと独立したCOMコンポーネントが行うので後はUIと紐付けるだけです
表形式のデータで1行1エンティティです
入力長さ、最小最大値、正規表現パターンなど基本的なカラムごとに独立したヴァリデーション
開始日終了日の順序などのエンティティ内の複数カラムにまたがるヴァリデーション
REST APIでサーバーに問い合わせる非同期ヴァリデーション
集計値の最大値やリレーションの存在確認など表全体のヴァリデーション
を行いたいです
入力が止まるとUXが悪化するのでエラーメッセージはメッセージボックスで表示したくありません
一定時間で消えるかフォーカスすると消滅する吹き出しのようなコントロールが理想です
これらを可能な限り宣言的にかつGUIからのチマチマとした面倒な設定は無しで実装したいです
REST APIや表全体のヴァリデーションの実体はUIと独立したCOMコンポーネントが行うので後はUIと紐付けるだけです
839デフォルトの名無しさん
2018/05/11(金) 20:13:41.96ID:HsLVJmEf >>838
文章だけで聞くレベルじゃないと思う
文章だけで聞くレベルじゃないと思う
840デフォルトの名無しさん
2018/05/11(金) 20:33:45.50ID:VErxDUwc >>839
C#erか、Rubierか、PSerからの宿題じゃないの?
C#erか、Rubierか、PSerからの宿題じゃないの?
841デフォルトの名無しさん
2018/05/11(金) 21:41:23.33ID:4Lj210NT ガチガチに入力規制するなら素直にAccess使おうよ…
842デフォルトの名無しさん
2018/05/11(金) 21:43:15.64ID:OTx54W6B843デフォルトの名無しさん
2018/05/12(土) 00:56:13.10ID:0dcq7Vjr 駆け出しの自分には質問内容すらさっぱりなんだが
このスレの住人はこの話の内容が理解できるくらいのレベルなの?
久しぶりに日本語が分からないって思ったわ
このスレの住人はこの話の内容が理解できるくらいのレベルなの?
久しぶりに日本語が分からないって思ったわ
844デフォルトの名無しさん
2018/05/12(土) 01:10:53.14ID:tqwvTn43 >>838
入力したそばからバリデーションを走らせたいの?
入力したそばからバリデーションを走らせたいの?
845デフォルトの名無しさん
2018/05/12(土) 04:58:53.18ID:F7D6rAHG >>843
データベースではよくあるけど間違ってもExcelでやる事じゃないから気にしなくていいぞ
データベースではよくあるけど間違ってもExcelでやる事じゃないから気にしなくていいぞ
846デフォルトの名無しさん
2018/05/12(土) 07:55:43.25ID:hwxaPbIq 無料の「Rails チュートリアル」で勉強すれば?
例えば、Rails で一般的な入力バリデ(validation)は、
空ではない
presence: true
1〜50文字
length: { in: 1..50 }
整数のみ
:only_integer
例えば、Rails で一般的な入力バリデ(validation)は、
空ではない
presence: true
1〜50文字
length: { in: 1..50 }
整数のみ
:only_integer
847デフォルトの名無しさん
2018/05/12(土) 08:27:40.09ID:iloBjJ0s >>843
Webアプリケーションなら典型的と言っていい
Webアプリケーションなら典型的と言っていい
848デフォルトの名無しさん
2018/05/12(土) 09:48:01.99ID:tqwvTn43849デフォルトの名無しさん
2018/05/12(土) 10:58:14.77ID:tJgrjt+6 凄いよ
MVVMやってる横で
MVCで頑張りましょうって言われた感じ
流石PSはキチガイ独占だNE
MVVMやってる横で
MVCで頑張りましょうって言われた感じ
流石PSはキチガイ独占だNE
850デフォルトの名無しさん
2018/05/12(土) 11:27:49.88ID:P5sx5scC >>849
どこにレスしてんの?
どこにレスしてんの?
851デフォルトの名無しさん
2018/05/12(土) 11:31:03.75ID:tqwvTn43 >>849
MVVMってなに?(wikipediaのページを読みながら)
MVVMってなに?(wikipediaのページを読みながら)
852デフォルトの名無しさん
2018/05/12(土) 11:43:33.47ID:g9HMZZiK >>851
京急で採用してるインバーターの事やで(大雑把なボケ)
京急で採用してるインバーターの事やで(大雑把なボケ)
853デフォルトの名無しさん
2018/05/12(土) 19:33:17.11ID:iloBjJ0s VBAにはMVVMもMVCもない
でも事務員さんのツールだからそれでいい
でも事務員さんのツールだからそれでいい
854デフォルトの名無しさん
2018/05/12(土) 19:47:10.61ID:tqwvTn43 事務員て何?
システム開発の専門家以外のホワイトカラーだったら全部事務員でOK?
システム開発の専門家以外のホワイトカラーだったら全部事務員でOK?
855デフォルトの名無しさん
2018/05/12(土) 19:50:29.63ID:anlHVJo4 IT、システムが専門じゃない人でいいんじゃないの?
856デフォルトの名無しさん
2018/05/12(土) 21:19:03.46 Excelとパワポしか触ってないIT元請け企業の社員とかね
857デフォルトの名無しさん
2018/05/13(日) 00:43:57.24ID:i7PAGBqe 過疎ってんなぁ
858デフォルトの名無しさん
2018/05/13(日) 09:38:43.13ID:Mp8iXUe3 クソな話題文句の言い合いでただ伸びているよりはマシ
859デフォルトの名無しさん
2018/05/13(日) 09:42:02.16ID:i7PAGBqe クソ or 過疎ならもうスレ要らなくねえか?
860デフォルトの名無しさん
2018/05/13(日) 10:08:12.60ID:V2dj1TCI 土日くらい休めよ
861デフォルトの名無しさん
2018/05/13(日) 10:55:04.93ID:hA5qejl9 今までC++とかの酷い奴も来たけど
今回のPSキチガイは群を抜いて酷かったな
もう二度と現れないで欲しいよね
今回のPSキチガイは群を抜いて酷かったな
もう二度と現れないで欲しいよね
862デフォルトの名無しさん
2018/05/13(日) 10:55:35.20ID:wyHt0Mjp 二分探索、そしてMatchでこれを活用する方法、理解できました。
・要:調査表の検索キーソート。
・検索キーが数値を含む文字列なので桁揃えする必要あり。
・Matchでは完全一致での二分探索はできないので、戻値と元値の比較が必要。
この編がポイントでしょうか。
目標10秒以内を目指し、皆さんのアドバイスを元に順に試しましたが、結局この二分探索
のすさまじい結果に驚き、辞書までは試しませんでした。多分これも早いんだろうけど、、
(つづく)
・要:調査表の検索キーソート。
・検索キーが数値を含む文字列なので桁揃えする必要あり。
・Matchでは完全一致での二分探索はできないので、戻値と元値の比較が必要。
この編がポイントでしょうか。
目標10秒以内を目指し、皆さんのアドバイスを元に順に試しましたが、結局この二分探索
のすさまじい結果に驚き、辞書までは試しませんでした。多分これも早いんだろうけど、、
(つづく)
863デフォルトの名無しさん
2018/05/13(日) 10:55:56.66ID:wyHt0Mjp >>862
(つづき)
少し条件を変えて、調査表(1.4万) x 駆動表(1万)で試しました。
[線形探索]
・Match線形探索/調査票(Range) ... 22.9 Sec
・Match線形探索/調査票(Array) ... 79.12 Sec
[For入れ子]
・調査票、駆動表ともにArrayなげこみ ... 53.10 Sec
For2重Loop。発見時、Exit Forで次へ。
[二分探索](調査票はSort済)
・Match二分探索/調査票(Range) ... 0.42 Sec
・Match二分探索/調査票(Array) ... 117.24 Sec
(つづく)
(つづき)
少し条件を変えて、調査表(1.4万) x 駆動表(1万)で試しました。
[線形探索]
・Match線形探索/調査票(Range) ... 22.9 Sec
・Match線形探索/調査票(Array) ... 79.12 Sec
[For入れ子]
・調査票、駆動表ともにArrayなげこみ ... 53.10 Sec
For2重Loop。発見時、Exit Forで次へ。
[二分探索](調査票はSort済)
・Match二分探索/調査票(Range) ... 0.42 Sec
・Match二分探索/調査票(Array) ... 117.24 Sec
(つづく)
864デフォルトの名無しさん
2018/05/13(日) 10:56:21.29ID:wyHt0Mjp >>862
(つづき)
結果、RangeObjectへのMatch二分探索が最強でした。
Arrayに乗せると、どんどん結果が悪くなるのが意味不明ですが、、
Match部分に時間がかかっているのは明らかでしたが、これを二分探索にすることで
1万回のMatchが 0.4 Secで終わるというのはすさまじいですね。
最終的に、検索キーの供給とマッチング、そのあとのSQL処理まで含めて
約100 Secかかっていたのが、0.8 Secで差分処理出来るようになりました。
みなさん、アドバイスいただきありがとうございました。
(つづき)
結果、RangeObjectへのMatch二分探索が最強でした。
Arrayに乗せると、どんどん結果が悪くなるのが意味不明ですが、、
Match部分に時間がかかっているのは明らかでしたが、これを二分探索にすることで
1万回のMatchが 0.4 Secで終わるというのはすさまじいですね。
最終的に、検索キーの供給とマッチング、そのあとのSQL処理まで含めて
約100 Secかかっていたのが、0.8 Secで差分処理出来るようになりました。
みなさん、アドバイスいただきありがとうございました。
865デフォルトの名無しさん
2018/05/13(日) 11:03:24.93ID:i7PAGBqe866デフォルトの名無しさん
2018/05/13(日) 13:26:19.68ID:LATlOC/3867デフォルトの名無しさん
2018/05/13(日) 15:10:20.32ID:uLIKOFiX868デフォルトの名無しさん
2018/05/13(日) 15:44:53.98ID:wyHt0Mjp >>867
22 Sec と 0.4 Secを誤差と? すごい感覚の持ち主ですね。
22 Sec と 0.4 Secを誤差と? すごい感覚の持ち主ですね。
869デフォルトの名無しさん
2018/05/13(日) 15:48:29.20ID:wyHt0Mjp >>866
両テーブルをArrayに乗せてForで回して単純比較したのですが、50 Secほどかかってしまったのです。
Matchを使わない場合、どう記述すればよいかわからず。
ヒントをいただけますか? もっと効率がよい方法があれば試してみたいです。
両テーブルをArrayに乗せてForで回して単純比較したのですが、50 Secほどかかってしまったのです。
Matchを使わない場合、どう記述すればよいかわからず。
ヒントをいただけますか? もっと効率がよい方法があれば試してみたいです。
870デフォルトの名無しさん
2018/05/13(日) 16:14:11.00ID:+vKBH4Jv こんな程度のどうでもよい事の効率を上げるより仕事全体の効率を上げる努力をしなさいって社長が言ってたよ
871デフォルトの名無しさん
2018/05/13(日) 16:20:34.22ID:uLIKOFiX >>868
お前のプログラムがおかしいだけだろ
お前のプログラムがおかしいだけだろ
872デフォルトの名無しさん
2018/05/13(日) 17:40:36.23ID:+vKBH4Jv 50secとか
どれだけ大規模システムを作られてるの?
もしかしてヤフーとかアマゾンとかのSE担当者さんですか?
どれだけ大規模システムを作られてるの?
もしかしてヤフーとかアマゾンとかのSE担当者さんですか?
873デフォルトの名無しさん
2018/05/13(日) 17:45:12.77ID:sMzgfoge 高速化の問題は細かい情報がないと話にならんよ
テスト用データと自分が書いたコードぐらいはGithubにあげてから質問してくれ
もちろんエクセルファイルの直接交換はセキュリティなど面倒事が多いからテキストファイルでな
テスト用データと自分が書いたコードぐらいはGithubにあげてから質問してくれ
もちろんエクセルファイルの直接交換はセキュリティなど面倒事が多いからテキストファイルでな
874デフォルトの名無しさん
2018/05/13(日) 18:11:36.74ID:wyHt0Mjp >>873
元質問は>>771,>774,
条件は >>862, >>863, に書いたとおりで
80 Sec かかったのは >>790 のコードです。
二分検索で 0.4 Secに短縮できたのは以下のコードです。関数にしました。
Function isReg(STR As String, RNG As Range) As Boolean
Dim IDX As Long
isReg = False
With Application
IDX = .IfError( .Match(STR, RNG, 1), 0 )
If IDX = 0 Then
' do nothing
ElseIf STR = .Index(RNG, IDX, 1) Then
isReg = True
Else
' do nothing
End If
End With
End Function
50 Sec かかった単純比較はこんな感じのForの入れ子です。
For i = LBound(arrDrvList) To UBound(arrDrvList)
For k = LBound(arrFdList) To UBound(arrFdList)
If arrDrvList(i, 1) = arrFdList(k, 1) Then
(処理)
Exit For
End If
Next
Next
どんな手法がよいか教えてください。Matchにこだわるつもりはありません。
元質問は>>771,>774,
条件は >>862, >>863, に書いたとおりで
80 Sec かかったのは >>790 のコードです。
二分検索で 0.4 Secに短縮できたのは以下のコードです。関数にしました。
Function isReg(STR As String, RNG As Range) As Boolean
Dim IDX As Long
isReg = False
With Application
IDX = .IfError( .Match(STR, RNG, 1), 0 )
If IDX = 0 Then
' do nothing
ElseIf STR = .Index(RNG, IDX, 1) Then
isReg = True
Else
' do nothing
End If
End With
End Function
50 Sec かかった単純比較はこんな感じのForの入れ子です。
For i = LBound(arrDrvList) To UBound(arrDrvList)
For k = LBound(arrFdList) To UBound(arrFdList)
If arrDrvList(i, 1) = arrFdList(k, 1) Then
(処理)
Exit For
End If
Next
Next
どんな手法がよいか教えてください。Matchにこだわるつもりはありません。
875デフォルトの名無しさん
2018/05/13(日) 18:16:05.72ID:wyHt0Mjp >>873
あ、テストデータですね。
=TEXT(RANDBETWEEN(1,1000000),REPT("0",7))&"-"&TEXT(RANDBETWEEN(1,2),"000")
で生成できます。
駆動側が1万行、調査側が1.4万行で生成できます。
あ、テストデータですね。
=TEXT(RANDBETWEEN(1,1000000),REPT("0",7))&"-"&TEXT(RANDBETWEEN(1,2),"000")
で生成できます。
駆動側が1万行、調査側が1.4万行で生成できます。
876デフォルトの名無しさん
2018/05/13(日) 18:18:17.66ID:LATlOC/3 >>874
それのどこが二分探索なのか俺にはよくわからない。
とりあえず自分のプログラムでArray上のデータをバイナリサーチすると、
調査表、 駆動表ともに1.4万件でやって 1.9Sec だった。(Core i5)
それのどこが二分探索なのか俺にはよくわからない。
とりあえず自分のプログラムでArray上のデータをバイナリサーチすると、
調査表、 駆動表ともに1.4万件でやって 1.9Sec だった。(Core i5)
877デフォルトの名無しさん
2018/05/13(日) 18:19:47.21ID:wyHt0Mjp >>875
日本語おかしいな。
駆動側が1万行、調査側が1.4万行。駆動側の表から1万回Matchをかけました。
調査側の表はSort済みですが、これをArrayに投げ込んで行うとなぜが遅くなります。
日本語おかしいな。
駆動側が1万行、調査側が1.4万行。駆動側の表から1万回Matchをかけました。
調査側の表はSort済みですが、これをArrayに投げ込んで行うとなぜが遅くなります。
878デフォルトの名無しさん
2018/05/13(日) 18:22:03.91ID:wyHt0Mjp879デフォルトの名無しさん
2018/05/13(日) 18:24:18.63ID:sMzgfoge880デフォルトの名無しさん
2018/05/13(日) 18:40:41.94ID:i7PAGBqe >>874
それ線形探索
それ線形探索
881デフォルトの名無しさん
2018/05/13(日) 18:53:06.33ID:wyHt0Mjp882デフォルトの名無しさん
2018/05/13(日) 19:03:59.96ID:i7PAGBqe883デフォルトの名無しさん
2018/05/13(日) 19:13:05.46 もう解決したんだから終了でよくね?
このまま続けてても無知な外野とかPS糞野郎がしゃしゃり出てくるだけ
このまま続けてても無知な外野とかPS糞野郎がしゃしゃり出てくるだけ
884デフォルトの名無しさん
2018/05/13(日) 19:15:15.85ID:wyHt0Mjp >>879
駆動表、調査表(各1列)ともに >>875 の関数で生成したデータを配置。
調査表をarrFdListにすると 86 Sec, rngFdListにすると27 Sec となりました。
Sub TES_Proc()
Dim ST As Single, ED As Single: ST = Timer
Dim rngFdList As Range '調査表
Dim arrFdList As Variant 'Array格納試験用
Dim r As Range, iHit As Long, iCnt As Long
Set rngFdList = Range( _
Range("R_Fd"), _
Range("R_Fd").Offset(100000, 0).End(xlUp) _
)
arrFdList = rngFdList
For Each r In Range("R_Drv").CurrentRegion '駆動表
With Application
iHit = .IfError( .Match(r.Value, arrFdList, 0), 0)
End With
If iHit > 0 Then iCnt = iCnt + 1
Next
Debug.Print iCnt & " Matched"
ED = Timer
Debug.Print "Waste: " & ED - ST & " sec"
End Sub
(つづく)
駆動表、調査表(各1列)ともに >>875 の関数で生成したデータを配置。
調査表をarrFdListにすると 86 Sec, rngFdListにすると27 Sec となりました。
Sub TES_Proc()
Dim ST As Single, ED As Single: ST = Timer
Dim rngFdList As Range '調査表
Dim arrFdList As Variant 'Array格納試験用
Dim r As Range, iHit As Long, iCnt As Long
Set rngFdList = Range( _
Range("R_Fd"), _
Range("R_Fd").Offset(100000, 0).End(xlUp) _
)
arrFdList = rngFdList
For Each r In Range("R_Drv").CurrentRegion '駆動表
With Application
iHit = .IfError( .Match(r.Value, arrFdList, 0), 0)
End With
If iHit > 0 Then iCnt = iCnt + 1
Next
Debug.Print iCnt & " Matched"
ED = Timer
Debug.Print "Waste: " & ED - ST & " sec"
End Sub
(つづく)
885デフォルトの名無しさん
2018/05/13(日) 19:15:40.65ID:wyHt0Mjp >>879
(つづき)
こちらは0.4Secで回答がえられるようになったコードです。>>874の関数を使用します。
ただ、駆動表をArrayに変えると100Sec以上かかります。(関数の引数型変更が必要)
Sub TES_Proc2()
Dim ST As Single, ED As Single: ST = Timer
Dim rngFdList As Range '調査表
Dim arrFdList As Variant 'Array格納試験用
Dim r As Range, IDX As Long, iCnt As Long
Set rngFdList = Range( _
Range("R_Fd"), _
Range("R_Fd").Offset(100000, 0).End(xlUp) _
)
arrFdList = rngFdList
For Each r In Range("R_Drv").CurrentRegion '駆動表
If isReg(r.Value, rngFdList) Then
iCnt = iCnt + 1
End If
Next
Debug.Print iCnt & " Matched"
ED = Timer
Debug.Print "Waste: " & ED - ST & " sec"
End Sub
(つづき)
こちらは0.4Secで回答がえられるようになったコードです。>>874の関数を使用します。
ただ、駆動表をArrayに変えると100Sec以上かかります。(関数の引数型変更が必要)
Sub TES_Proc2()
Dim ST As Single, ED As Single: ST = Timer
Dim rngFdList As Range '調査表
Dim arrFdList As Variant 'Array格納試験用
Dim r As Range, IDX As Long, iCnt As Long
Set rngFdList = Range( _
Range("R_Fd"), _
Range("R_Fd").Offset(100000, 0).End(xlUp) _
)
arrFdList = rngFdList
For Each r In Range("R_Drv").CurrentRegion '駆動表
If isReg(r.Value, rngFdList) Then
iCnt = iCnt + 1
End If
Next
Debug.Print iCnt & " Matched"
ED = Timer
Debug.Print "Waste: " & ED - ST & " sec"
End Sub
886デフォルトの名無しさん
2018/05/13(日) 19:20:14.73ID:wyHt0Mjp >>882
いや、Matchを使うのがおかしいと言われているので、
もっと一般的な方法を知りたくて。
50秒のほうは確かに線形探索ですね。
上のほうでシートにアクセスしているから遅いと言われて
2つの表ともArrayに乗せて比較のために実行したものです。
いや、Matchを使うのがおかしいと言われているので、
もっと一般的な方法を知りたくて。
50秒のほうは確かに線形探索ですね。
上のほうでシートにアクセスしているから遅いと言われて
2つの表ともArrayに乗せて比較のために実行したものです。
887デフォルトの名無しさん
2018/05/13(日) 19:22:13.03ID:wyHt0Mjp888デフォルトの名無しさん
2018/05/14(月) 06:52:21.09ID:mBgrQGTw889デフォルトの名無しさん
2018/05/14(月) 07:11:10.06ID:n+3GdDup 朝から粘着してる奴が何を言ってるんだかw
890デフォルトの名無しさん
2018/05/14(月) 13:57:44.01ID:lGg9ccsb ニヤニヤ
891デフォルトの名無しさん
2018/05/14(月) 17:46:18.99ID:wio42IgJ キモっ
892デフォルトの名無しさん
2018/05/14(月) 22:09:45.23ID:nBdlD1Xi エクセルでメールを送る際にCDOを使用していたのですが
メールサーバーの仕様が変わって
ポート587のTLS/STARTTLSが必要になりました
調べてみるとCDOはTLS/STARTTLS非対応のようです
TLS/STARTTLSに対応できるエクセルでメールを送る
お勧めの方法を教えてください
よろしくお願いします
メールサーバーの仕様が変わって
ポート587のTLS/STARTTLSが必要になりました
調べてみるとCDOはTLS/STARTTLS非対応のようです
TLS/STARTTLSに対応できるエクセルでメールを送る
お勧めの方法を教えてください
よろしくお願いします
893デフォルトの名無しさん
2018/05/15(火) 07:03:51.94ID:f6zNW2OD894デフォルトの名無しさん
2018/05/15(火) 07:57:52.48ID:KTrZAEG+ =と:=の違いが分からんちん
895デフォルトの名無しさん
2018/05/15(火) 10:03:02.81ID:MncegZ0n896デフォルトの名無しさん
2018/05/15(火) 12:22:16.58ID:iR34l3ga 代入と比較を両方=にしたせいで名前付き引数へ渡してるのか比較してるのかわからないから苦肉の策で:=を使う
VBAの言語設計のセンスのなさの表れ
VBAの言語設計のセンスのなさの表れ
897デフォルトの名無しさん
2018/05/15(火) 12:36:20.46ID:2i/hB9LU 古い言語だからセンスが無いのはしょうがない
ただずっと伝統を守って生産性をあげようとしてこなかった点は残念だね
Microsoftに見捨てられた言語
ただずっと伝統を守って生産性をあげようとしてこなかった点は残念だね
Microsoftに見捨てられた言語
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★4 [七波羅探題★]
- 中国軍機レーダー照射、トランプ氏沈黙突く 試される日本外交 [蚤の市★]
- 【地震】青森県で震度6強 長周期地震動も 津波注意報すべて解除 ★7 [ぐれ★] [ぐれ★]
- 【広島】「万引きした人を追跡」コンビニ店員の男性(46)を果物ナイフで刺したか 中国籍の少年(17)を殺人未遂容疑で現行犯逮捕 [ぐれ★]
- トランプ大統領 エヌビディア製AI半導体の中国輸出許可 安全保障重視の方針転換 [蚤の市★]
- 【サッカー】58歳カズ「オファーが来ている」 J3福島と近日中にも交渉 早ければ年内にも決断 [征夷大将軍★]
- 【悲報】高市早苗の擬人化がXで大バズりwwwwwwwwwwww [455031798]
- 高市が早くあの発言を撤回しないと、中国からもっと大きな制裁が飛んでくるぞ [805596214]
- 【動画】ファッションモデルまんこ、裸でランウェイを歩く。これがファッションだと言われて [749674962]
- 【画像】髙市さん「無職のシンママ支援を手厚くするため、世帯年収900万円以上の控除をカットします🙂」 [881878332]
- 早大名誉教授「高市内閣の高支持率はデータ操作か、支持している日本人がアホなのか」👈核心を突いてしまう [868050967]
- こんぺこ!こんぺこ!こんぺこ!🐰🏡
