Excel VBA 質問スレ Part75

■ このスレッドは過去ログ倉庫に格納されています
2022/02/09(水) 14:24:32.62ID:I0u44nFvd
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑2行に減ってるけど、同じ内容を3行に増やして貼り付けるナリ

ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ

※前スレ
Excel VBA 質問スレ Part74
https://mevius.5ch.net/test/read.cgi/tech/1639932059/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2022/03/19(土) 10:48:26.22ID:kJy21FG50
>>347で質問させて頂いたものです。
色々調べましたがシートにINDEXを設定するのは実現可能か分からなかったのと、
出来ない場合、代替案を考えたいのですが、
ひとつのシートに20万行、100列の一覧が有ったとして
そのとき、ひとつの項目(項目1とします)はある値とイコール、更に別の項目(項目2とします)は
項目1で抽出したレコードの内の最大値を求めたいです。

どのような方法が一番速く処理出来ると思いますか?
2022/03/19(土) 10:48:43.76ID:OOddD3UI0
>>369は正常に動作したコードです。

最初は下記のようなコードでエラーとなっていました。

Dim buf As Variant ←Variant型にしていた。

For Each buf In myRange.Value ←.Valueを付けていた。
target = target & buf & vbCrLf
Next

Debug.Print target
2022/03/19(土) 10:51:21.24ID:CvJNM5+IM
範囲検索するのにfindとworksheetfunction.matchとではどちらが速いですか?
2022/03/19(土) 10:52:04.86ID:CvJNM5+IM
ちなみに完全一致の場合です
2022/03/19(土) 11:51:46.09ID:/t3SgnSXa
自分で試せばいいだろw
2022/03/19(土) 11:51:57.89ID:i9OMIEsk0
試したほうが早いよ
2022/03/19(土) 12:52:21.15ID:UXt2lmR80
は?試してたらこんな所で聞きませんけど?
377デフォルトの名無しさん (ワッチョイ fb8c-ef3C)
垢版 |
2022/03/19(土) 12:52:58.71ID:4DGoWoBi0
>>369
>cnt = Selection.Rows.Count
>Set myRange = Range(Cells(Selection.Rows(1).Row, 12), Cells(Selection.Rows(1).Row + cnt - 1, 12))

Set myRange = Cells(Selection.Row, "L").Resize(Selection.Rows.Count)
もっと簡単に書けそうな気もするがこんなもんかな
2022/03/19(土) 13:47:10.61ID:zEPprvQva
>>376
試してなくても、こんなところで聞かないでくださいw
2022/03/19(土) 14:44:42.82ID:qNoriQBK0
>>377
ちゅんちゅんさん推奨の書き方か
resize真似して使ってたんだけど間違えやすかった
2022/03/19(土) 15:12:32.83ID:OOddD3UI0
>>377
ありがとうございます。.Resizeを使うとスマートに書けるんですね。使ってみます。
2022/03/19(土) 15:57:19.25ID:rhR/rlzyd
autofilterで表示されたものだけで、列をautofitすることは出来ますか?
382デフォルトの名無しさん (ワッチョイ fb8c-ef3C)
垢版 |
2022/03/19(土) 16:36:01.13ID:4DGoWoBi0
SpecialCells(xlCellTypeVisible)でできんじゃねーかな
383デフォルトの名無しさん (ワッチョイ 092b-8yjF)
垢版 |
2022/03/19(土) 16:40:58.85ID:AuBNrAzT0
コードはスマートなのに…って言われろ
384デフォルトの名無しさん (ワッチョイ fb8c-ef3C)
垢版 |
2022/03/19(土) 18:04:38.19ID:4DGoWoBi0
Range("テーブル1[項目A]").SpecialCells(xlCellTypeVisible).Columns.AutoFit
出来ないのかと思ったらできるじゃん
2022/03/19(土) 18:22:46.82ID:qn2+ggVDa
VBA素人にご教示ください

PowerQueryで整形したテーブルのデータを
別ブックのVBAに引っ張ってきたい場合
・列データをユーザー定義型にまとめる
・ListObjectを使う
どちらがベターでしょうか?
2022/03/19(土) 18:48:13.74ID:XaCRBAWQM
引っ張ってきたい側でpowerquery使って整形したテーブルをソースに指定する
2022/03/19(土) 19:07:47.91ID:qn2+ggVDa
すいません、うまく説明できてませんでした
PowerQueryとVBAは別ブックでも同じブックでもいいです

やりたいことは
巨大なテーブルを参照してVBAで検索フォームを作りたい
です
その場合、テーブルデータを
・ユーザー定義型にまとめる
・ListObjectを使う
どちらがいいのか?が質問の意図です
改めてお願いします
2022/03/19(土) 20:45:24.46ID:ecCVM1RA0
全くの素人で申し訳ないんですけど、やりたい事

❶:B10からスタートしてボタンを押したら次の行に指定された文字を入力していく。

❷:Ifを使って、もしB29行まで埋まった状態でボタンを押したら
 B2からB29までコピーしてB1からB28にペースト
 →B29に指定された文字を入力

色々頑張ったけど自分で❶は出来たけど❷ハードルが高かった・・・
2022/03/19(土) 21:21:42.73ID:titlKmjCa
2のどの部分ができないのか
2022/03/19(土) 21:33:07.78ID:qNoriQBK0
If Range("B29")<>"" then Range("B1:B28").value = Range("B2:B29").value
こんな感じか?
2022/03/19(土) 22:17:04.40ID:hVJQeY+Td
>>389
IFで範囲内空白があった場合を出そうとしてたんだけどうまくいかなかったんや・・・
2022/03/19(土) 22:17:58.96ID:hVJQeY+Td
因みに入れたいのは勝利か負け。2つボタン作れば別々に行けるかな
2022/03/19(土) 22:56:32.21ID:hVJQeY+Td
>>389
ありがとう。認識できた。そしてなんとか検索して思うような結果になった!
2022/03/20(日) 00:13:30.21ID:ZUsPYd03M
>>382
>>384
ありがとうございます。
明日試してみます。
2022/03/20(日) 01:49:20.37ID:CEJcVsO40
>>387
巨大ならlistobjectかadoじゃないの、速度的に。
巨大じゃなきゃ何でもいいや。
2022/03/20(日) 06:37:24.28ID:Md+DYeh30
>>372
ちゃんとタイマー走らせて確認してるわけではないけど体感的には大して変わらない
でも完全一致で検索をかける場合matchは検索対象が存在しないとエラー停止するのに対してfindはset range変数=対象範囲.find(ryで検索をかけてやればrange変数がnothingか否かで判別可能だから個人的にはfindの方が好きかなぁ
2022/03/20(日) 08:33:55.10ID:Zh6y5r970
>>370
同じようなことを前考えたけど、恐らくEXCELのシートにインデックスを貼るのは無理っぽい。
ADOどころか拡張機能であるADOXでも無理だったはず。

代替案としてはSQLが使えないので、都度個別で考えるしかないけど、とある項目の最大値や最小値が入っているレコードの内容が欲しいなら基本、MATCH関数での検索となると思う。
2022/03/20(日) 10:22:27.56ID:HKRI5d8YM
>>370
> どのような方法が一番速く処理出来ると思いますか?
フィルターかけてSUBTOTAL(4, 範囲)
2022/03/20(日) 13:33:44.21ID:NjSblaend
>>382
>>384
うまくいきました。
ありがとうございます。
2022/03/20(日) 15:42:40.21ID:IQ9r07oYM
>>369
すまん、368だけどコード見てもやりたいことがまるでわからんので、回答書けない
2022/03/20(日) 19:07:32.87ID:fXpRWn260
初心者のため、ご存じでしたらご教授お願い致します。
エクセルから印刷する際、プリンタをカラー、モノクロをそれぞれ
自動印刷できませんでしょうか?
PageSetup.BlackAndWhite = True/Flase
以外で方法がありましたら、ご教授をお願い致します。
402デフォルトの名無しさん (ワッチョイ fb8c-ef3C)
垢版 |
2022/03/20(日) 19:41:51.49ID:V5Xg0/PX0
>>401
その方法では成功しないのですか?
403デフォルトの名無しさん (ワッチョイ 1318-xc4H)
垢版 |
2022/03/20(日) 19:51:58.85ID:aHWtYUUu0
素人にご指導願います。

生年月日や所属等を含めた社員のリストを作ってまして、氏名等で検索できるようオートフィルターをvbaで作るところまではできました。

「チェックボックスにチェックを入れたら、指定した日付と同じ生年月日でフィルターをかける」という操作は可能でしょうか。
例えば、セルに1990/3/1を入れてるとして、チェックボックスにチェックを入れたらフィルターがかかって1990/3/1の生年月日だけ出てくる(それ以外は消える)というものです。
チェックボックスにチェックを入れるかどうかで指定した日でフィルターをかけるかどうかを判断したいです。

もし可能でしたら、ご教示いただけると幸いです。
よろしくお願いします。
2022/03/20(日) 19:56:19.87ID:fXpRWn260
>>402
PageSetup.BlackAndWhite = Falseで白黒印刷設定したのですが、
塗りつぶしの背景が白で印刷されてしまいます。
また、カラーの図が白黒で印刷できませんでした。
プリンタのプロパティにある印刷設定(両面、集約、カラー等)はVBAでは制御できないでしょうか?
2022/03/20(日) 20:02:50.72ID:0CQh90gjM
>>401
> 以外で方法がありましたら
なぜこういう人は以外でないとダメな理由を書かないのか
2022/03/20(日) 20:15:26.37ID:KxZjhn5zM
>>404
すまん、リロードしてなかった
っていうか最初から書けよ…

> PageSetup.BlackAndWhite = Falseで白黒印刷設定したのですが
白黒設定は True じゃね?

> プリンタのプロパティにある印刷設定(両面、集約、カラー等)はVBAでは制御できないでしょうか?
無理、
Application.Dialogs(xlDialogPrinterSetup).Show
で、ダイアログを表示させるのが精一杯
407デフォルトの名無しくん (ワッチョイ fb8c-ef3C)
垢版 |
2022/03/20(日) 20:21:02.46ID:V5Xg0/PX0
>>404
プリンタドライバをもう一つ入れて、そのドライバの初期設定を白黒にして「白黒印刷専用」とする。
このプリンタ(ドライバ)をVBAで選択して印刷する。

過去にやったことがあるけどちょっとめんどくさかった記憶
他にいい方法あるのかな
2022/03/20(日) 20:23:50.61ID:Md+DYeh30
>>403
チェックボックスにマクロを登録してフィルターのキーをその入力があるセルを参照すれば良いだけだと思う
例外処理があるならそれはどういう条件で省くのか分からないから自分で考えて
2022/03/20(日) 20:36:02.96ID:fXpRWn260
>>406
ご回答ありがとうございます。
理由も一緒に書けばよかったですね。大変失礼致しました。
以後気を付けます。

やはり無理なんですね。
他のかたがご指摘のように、白黒専用プリンタドライバを増やして
プリンタを切り替えてトライしてみます。

ご指摘の通り、PageSetup.BlackAndWhite = Trueが白黒です。失礼致しました。
2022/03/20(日) 20:41:31.10ID:fXpRWn260
>>407
ご回答ありがとうございます。
プリンタドライバを増やす方法、ご提案ありがとうございます。
早速トライしてみます。
ドライバーを入れた後、プリンタの基本設定で白黒を初期設定にすれば白黒専用でいけますね。
2022/03/20(日) 21:09:18.42ID:j6YhEUF6d
>>403
多分VBA要らない
スライサーで十分
2022/03/21(月) 02:46:04.32ID:HoitaytG0
スライサやタイムライン知らない人多いらしいね
マイナーなのかな?
2022/03/21(月) 06:08:07.49ID:8sRo6eoq0
マイナーはマイナーだと思う
MOS受けて初めて知ったわ
2022/03/21(月) 07:21:11.67ID:K7MjVs2M0
テーブルからしてまだマイナーだからかしら?
2022/03/21(月) 07:27:35.78ID:Od0FfcRPM
ブックの共有するとテーブルが使えない
共有機能とテーブルどちらを選ぶとしたら会社では共有を選ぶ
糞共有機能は早く廃止してほしいな
416デフォルトの名無しさん (JP 0H73-Sjl/)
垢版 |
2022/03/21(月) 08:06:13.98ID:S9+WMeZFH
誰か教えてください
各営業所から毎月送られてくる実績ファイルを一つのブックに集計するマクロを作りたい
一つのフォルダに全てのブックを入れてループ処理するマクロ自体はできたんだけど肝心の転記の仕方がわからない
具体的には各ファイルの指定のセルから集計表ファイルの指定のセルに営業所名ごとに転記したい
営業所ファイルには4〜3月まで縦に月毎に実績が並んでいて集計表のファイルは横に月毎になってるって感じ
どうしてもわからなくてどなたか助けてください
2022/03/21(月) 08:19:15.34ID:/kHY2rERM
powerqueryだな
418デフォルトの名無しさん (JP 0H73-Sjl/)
垢版 |
2022/03/21(月) 08:24:32.18ID:S9+WMeZFH
>>417
ありがとうございます
パワークエリってやつですかね?
検索かけたら使い方分かりそうでしょうか?
2022/03/21(月) 08:52:49.57ID:K7MjVs2M0
>>418
ようつべのライブラリに放り込んでた中から
役に立ちそうなもの見繕ってみた。

PLをフォルダに放り込むだけで科目ごとの数値を比較できる【エクセル パワークエリ PowerQuery】
https://youtu.be/xxc5sCl6U3w

大量のエクセルファイルを1つにまとめる方法【ファイル名活用】
https://youtu.be/XMwbj7x4Q0Y

【マクロ無しで】大量ファイルを1つに統合。簡単にクリック操作で可能(Power Query、取得と変換)
https://youtu.be/RCmoho3jU8Q

PowerQuery 複数のExcelファイルからデータを結合する方法
https://youtu.be/VxKoqBJWgRo
2022/03/21(月) 09:00:07.15ID:8sRo6eoq0
>>416
Sub foo()

'開いてset
Set 転記先ブック = ThisWorkbook
Set 営業所ブック = Workbooks.Open( _
"C:\Users\81909\Desktop\eigyosyo.xlsx")

'転記
転記先ブック.Sheets("sheet1").Range("b2:d3").Value = _
営業所ブック.Sheets("sheet1").Range("b2:d3").Value

End Sub

保存ファイルのパスと転記セルの範囲変えたら使えると思う
2022/03/21(月) 09:06:14.38ID:Yo31hjL10
>>397
ありがとうございます。
やはりEXCELのシートにINDEXを設定するのは無理なんですね。

>>398
ありがとうございます。
残念ながら20万件100項目という量のせいか、
フィルターを掛けるとそのまま固まってしまい、いつ返ってくるか、そもそも返ってくるのかすら分からない状況になりました。
2022/03/21(月) 09:14:48.04ID:8sRo6eoq0
>>421
そもそもフィルター掛ける必要があるのかどうかってのもあるけど・・・
ぱっとおもいつくのは

・forで回して別シートに転記。量が少なければそこまでかからんはず。量が多いとかなり大変
・別シートにfilter関数。かなり軽いけど、その量に対してはやったことないな
・スプレッドシートでquery関数。軽さならこれが最強で、めちゃくちゃ軽い
423デフォルトの名無しさん (アウアウエー Sae3-Sjl/)
垢版 |
2022/03/21(月) 16:06:54.19ID:YtFKrPKNa
>>419
ありがとうございます
見て参考にさせていただきます
424デフォルトの名無しさん (アウアウエー Sae3-Sjl/)
垢版 |
2022/03/21(月) 16:10:10.41ID:YtFKrPKNa
>>420
ありがとうございますこの構文のでいける感じですか?
ホントど素人で申し訳ないんですけど転機の構文は何をしてる感じでしょうか?
2022/03/21(月) 16:14:49.98ID:ombAFbaLM
>>420は要点をコンパクトに上手に説明してる
これが理解できないなら自分で最終回答に辿り着くのは無理だよ
2022/03/21(月) 16:21:01.88ID:8sRo6eoq0
>424
転記の部分は値でコピーペーストだよ
試しに動かしてみたほうが早いと思う
427デフォルトの名無しさん (アウアウエー Sae3-Sjl/)
垢版 |
2022/03/21(月) 16:38:45.50ID:YtFKrPKNa
>>425
>>426
ありがとうございます
まずは動かしてみます
2022/03/21(月) 16:43:02.21ID:HoitaytG0
テーブルってまだ普及していないねかな?
2022/03/21(月) 16:50:26.11ID:DBpwCepOM
永遠に普及しないでしょうね
列島猿はセル結合したり自分で色塗ったり線引いたりするのが大好きで、お仕着せのDBにデータだけ放り込むみたいなのは苦手なので
2022/03/21(月) 16:56:11.28ID:8sRo6eoq0
全面的に同意
テーブルで表作ったらテーブルを解除しろって言われるレベル
2022/03/21(月) 17:19:32.38ID:fDbYf0xJ0
>>424
転記する際に縦横を置換したいんじゃねえの?
420の例にはそれが入ってないかと
2022/03/21(月) 17:21:13.79ID:fDbYf0xJ0
テーブルでも椅子でもいいからさっさとやれと言われるわしら下っ端
2022/03/21(月) 17:57:58.00ID:bPJRBgFUM
>>416
マクロ記録開始してその転記の操作してみればいいかと
434デフォルトの名無しさん (JP 0H73-Sjl/)
垢版 |
2022/03/21(月) 19:13:04.04ID:S9+WMeZFH
>>431
あーそうなんですね
そこ大事なところなもんで…
ありがとうございます
2022/03/21(月) 19:37:57.87ID:HoitaytG0
いつも思うのだけど、これだけExcel情報が世の中に溢れているのにセルご法度の結合だの色塗りまくるだの改行だのする人ばかりなのは何故なんだろうね??
パソコン雑誌とか読んで勉強していないのかなと?
2022/03/21(月) 19:43:19.70ID:zSyDDKWUH
>>435
http://www2.odn.ne.jp/~cbl97790/shinsakutenjishitu.htm
2022/03/21(月) 19:53:51.30ID:8sRo6eoq0
>>435
業務改革を微塵も考えていないから
一日8時間で、最初に与えられたルーチンが回ればそれで良いと考えてる人がほとんど
なんでそうなってるかは、知らん
2022/03/21(月) 20:06:38.09ID:7hRN3rZ2M
>>435
別にExcelの達人になるわけじゃないし
そもそも結合するなと言うなら縦方向の「選択範囲内で中央」を実現しやがれ
439デフォルトの名無しさん (JP 0H73-Sjl/)
垢版 |
2022/03/21(月) 20:11:42.48ID:S9+WMeZFH
>>433
それも思ったんですけどそれだと恐らく一つの営業所の実績を一つのセルにコピーする操作になってしまいそうで…
2022/03/21(月) 20:23:41.52ID:2j3OjuAE0
>>439
ここまでの説明で理解できてないようなので
とりあえず営業所毎ファイルと集計表ファイルをアップロードしないと話が進まない
441デフォルトの名無しさん (JP 0H73-Sjl/)
垢版 |
2022/03/21(月) 20:42:56.54ID:S9+WMeZFH
>>440
オケ
さすがにそこまでは出来ないので色々試してみます
ありがとうございました
2022/03/21(月) 20:43:57.15ID:8sRo6eoq0
>>439
転記部分は好きなように変えたり増やしたりスレば良い
b2をd3に、a1をe5に、など、なんとでもなる。

'転記
転記先ブック.Sheets("sheet1").Range("b2").Value = _
営業所ブック.Sheets("sheet1").Range("d3").Value
転記先ブック.Sheets("sheet1").Range("a1").Value = _
営業所ブック.Sheets("sheet1").Range("e5").Value
2022/03/21(月) 21:18:25.50ID:8fSFwG7JM
>>439
思うだけで手を動かす気はないのね…
いち抜けた~っと
444デフォルトの名無しさん (JP 0H73-Sjl/)
垢版 |
2022/03/21(月) 21:20:10.88ID:S9+WMeZFH
>>443
ごめんなさい会社のファイルなので今日できんのよ
明日行ったらやってみる
445デフォルトの名無しさん (JP 0H73-Sjl/)
垢版 |
2022/03/21(月) 21:21:07.73ID:S9+WMeZFH
>>442
ありがとうございます!
やってみます!
2022/03/21(月) 21:49:42.78ID:HoitaytG0
日本のExcelのレベルが低いからExcel講師やパソコン教室が潤うと。
2022/03/21(月) 22:13:13.78ID:NuDNOSQMd
ループ文とか条件文とかユーザーフォームとかクラスとか使ってごちゃごちゃやってるけど結局のところファイルの開閉と転記作業しかしてない事に気づいた

転記があれば何でも出来る
2022/03/21(月) 23:00:27.32ID:Rbd9piL90
転記の子
2022/03/22(火) 00:36:53.70ID:000FKf5P0
始めたてのド素人ですがご教示頂けると幸いです。
表の列ごとにランダムに入っている異なるフォントの色で正負を判断して最終行に和と差の合計値を出力したいのですが可能でしょうか?
詳しく言うと赤色が負として、黒色が正としてセルに数値が手打ちされてます。
列の最終行を取得しsum関数を挿入することはできるのですが、フォントの色で正負を判断して合計値が出せるのか教えていただけないでしょうか。
2022/03/22(火) 00:49:54.42ID:kEBDDtio0
>>449
もともとエクセルにはマイナスの数字を自動的に赤くする機能がある
その機能で色を変えてるんだと集計の方法も変わってくるから、まずはそこを確認して
2022/03/22(火) 01:08:13.62ID:TibwPpTv0
書式に辿り着ければ
自ずと答えが見つかろうぞ
2022/03/22(火) 01:19:04.08ID:KVIRUNm3d
そもそもVBA不要
sumif関数で出来る
2022/03/22(火) 02:43:58.13ID:d3YPRjya0
きっとこれは黒色の負とか青色の正とかあって
あえて色で集計したいんだろうな


と、深読み
2022/03/22(火) 12:14:00.76ID:000FKf5P0
ご返信ありがとうございます。
表のシートが種類ごとにあって量が千を超えているので自動化したい所存です。
前任が手書きの台帳をエクセルに落してくれたまでは良かったのですが、他の社員が手書きのときと変わらず正の値で色のみ変えて入力するため、毎年年度末になると延々と手作業で何時間も単純作業を強いられるのでなんとかならないかと思案しておりました。
2022/03/22(火) 12:33:30.37ID:jGZXGfWV0
条件書式でゼロ以上は赤字にするとかでもダメなんか?
逆にVBA使った方が遅かったり不便にかりそうな案件だと思うんだが
2022/03/22(火) 13:33:25.27ID:MYdjPEb1M
>>421
> 残念ながら20万件100項目という量のせいか、
> フィルターを掛けるとそのまま固まってしまい、いつ返ってくるか、そもそも返ってくるのかすら分からない状況になりました。
PC買い替えろ
30万行x300列に数値データを埋めてやってみたけどフィルター処理なんてほぼ瞬時に終わるぞ
2022/03/22(火) 13:38:08.96ID:mA7AOTDM0
他の社員が入力してるものだからなあ
集計よりも入力用のシートを何とかできたら手っ取り早いんだがそれは無理なんかな
2022/03/22(火) 13:43:49.21ID:R4HxgmoiM
色付けるよりマイナス記号打つ方が速いだろうに……
ご苦労さまでした
459デフォルトの名無しさん (スッップ Sd33-qAFj)
垢版 |
2022/03/22(火) 13:48:33.03ID:C94PEu1/d
>>454
はっきり言えばこんなこともできないお前は手を出すな
2022/03/22(火) 14:03:10.79ID:l3SAD7eYM
>>455
元のデータが 1, -2 ってなってるところを 1, 2 (←赤文字) で入力されてるんだろ

>>454

if Cells(行,列).Font.Color = RGB(255,0,0) Then ...
で判断できるよ
データ書き換えていいなら(てか、個人的にはそうすべきと思うが)
For C In ActiveSheet.UsedRange
If C.Font.Color = XlRgbColor.rgbRed And IsNumeric(C.Value) Then
C.Value = -C.Value
C.Font.Color = XlRgbColor.rgbBlack
End If
Next
として、一気に書き換えちゃうのがいいかも
2022/03/22(火) 19:08:50.48ID:Gjrul4fP0
>>456
流石に仕事場のPCを勝手に買い替えるのは私には出来ませんし、
最終的にフィルター等の処理は使用せずにかなりの高速化をはかることが出来ました。

この方式が最速ではないかも知れませんが、
今までADO接続でSQLを実施して
2〜3分掛かっていた処理が一瞬で終わるようになったので満足しています。

今まで質問に答えて頂いた方、色々参考にさせていたきました。
ありがとうございました。
2022/03/22(火) 20:15:28.30ID:WUXZwGEtd
>>454
やはりVBAは不要
オートフィルターのフォント色で絞り込み、subtotal関数で十分
463デフォルトの名無しさん (ワッチョイ b9aa-7ZW8)
垢版 |
2022/03/22(火) 23:22:39.90ID:VOPCLAbN0
本当にド素人なのでお許し下さい
ここに3枚の請求書(Excelデータ形式)があり、それぞれsheet1、sheet2、sheet3にあります
フォーマットはバラバラで文字や配置が異なります
これをsheet4で「支払日」「取引先名」「取引内容」「税込金額」を一覧表にしたいのです
こういうことはVBAでは可能でしょうか?
可能であれば、難易度はどの程度でしょうか?

*実際には請求書は数百枚あります
2022/03/22(火) 23:26:23.97ID:b3mXLXMM0
>>463
フォーマットが統一されていれば、vbaでやる意味はある
フォーマットが統一されていない場合、vbaで書く意味がほとんどない。手作業でコピペするのと変わらん
2022/03/22(火) 23:26:42.94ID:b3mXLXMM0
かわらん、と言ったけど手作業でコピペする方が早いわ
2022/03/22(火) 23:43:05.71ID:6kcI/g5C0
>>461
そのフィルターが処理するために、
全データをメモリに載せようとするから、メモリ不足でフリーズする

20万件 * 100項目 = 2千万項目, 20,000,000

仮に、1つの項目が1KB とすると、
20,000,000 KB = 20,000 MB = 20 GB

メモリに載せられないから、フリーズする

ファイルの読み込みと同じ。
20GBのファイルを一度に全部読み込めない

部分的な読み込みにしないと無理

例えば、1MBずつ読み込んで処理して、そのデータを捨てるとか。
これなら、1MBしかメモリを使わない

でも、この方法では、全データをソートしたりできない。
自分で実装できないから、結局、データベースを使うしかない
2022/03/23(水) 00:15:35.00ID:HTP/aspP0
>>461
せめてどうやったかぐらい書けよ

つかエクセルからエクセルブックにADOでSQLとか、余計なオーバーヘッドで遅くなるイメージしかないんだがな
それで高速化できるようなケースがあるのか?
2022/03/23(水) 00:34:00.08ID:3vbjDh2k0
。。同志達は例の追加された新しい関数の情報つかんでいるよね?
なんだか凄そうな予感
2022/03/23(水) 01:05:25.56ID:MTKAae3e0
ワークシート関数の追加のニュースなら見たけどVBAにも何か追加されるん?
https://forest.watch.impress.co.jp/docs/news/1395929.html
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況