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


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

Excel VBA 質問スレ Part75



1 名前:デフォルトの名無しさん mailto:sage [2022/02/09(水) 14:24:32.62 ID:I0u44nFvd.net]
!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

377 名前:364 mailto:sage [2022/03/19(土) 10:48:43.76 ID:OOddD3UI0.net]
>>369は正常に動作したコードです。

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

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

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

Debug.Print target

378 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 10:51:21.24 ID:CvJNM5+IM.net]
範囲検索するのにfindとworksheetfunction.matchとではどちらが速いですか?

379 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 10:52:04.86 ID:CvJNM5+IM.net]
ちなみに完全一致の場合です

380 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 11:51:46.09 ID:/t3SgnSXa.net]
自分で試せばいいだろw

381 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 11:51:57.89 ID:i9OMIEsk0.net]
試したほうが早いよ

382 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 12:52:21.15 ID:UXt2lmR80.net]
は?試してたらこんな所で聞きませんけど?

383 名前:デフォルトの名無しさん [2022/03/19(土) 12:52:58.71 ID:4DGoWoBi0.net]
>>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)
もっと簡単に書けそうな気もするがこんなもんかな

384 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 13:47:10.61 ID:zEPprvQva.net]
>>376
試してなくても、こんなところで聞かないでくださいw

385 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 14:44:42.82 ID:qNoriQBK0.net]
>>377
ちゅんちゅんさん推奨の書き方か
resize真似して使ってたんだけど間違えやすかった



386 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 15:12:32.83 ID:OOddD3UI0.net]
>>377
ありがとうございます。.Resizeを使うとスマートに書けるんですね。使ってみます。

387 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 15:57:19.25 ID:rhR/rlzyd.net]
autofilterで表示されたものだけで、列をautofitすることは出来ますか?

388 名前:デフォルトの名無しさん [2022/03/19(土) 16:36:01.13 ID:4DGoWoBi0.net]
SpecialCells(xlCellTypeVisible)でできんじゃねーかな

389 名前:デフォルトの名無しさん [2022/03/19(土) 16:40:58.85 ID:AuBNrAzT0.net]
コードは

390 名前:スマートなのに…って言われろ []
[ここ壊れてます]

391 名前:デフォルトの名無しさん [2022/03/19(土) 18:04:38.19 ID:4DGoWoBi0.net]
Range("テーブル1[項目A]").SpecialCells(xlCellTypeVisible).Columns.AutoFit
出来ないのかと思ったらできるじゃん

392 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:22:46.82 ID:qn2+ggVDa.net]
VBA素人にご教示ください

PowerQueryで整形したテーブルのデータを
別ブックのVBAに引っ張ってきたい場合
・列データをユーザー定義型にまとめる
・ListObjectを使う
どちらがベターでしょうか?

393 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 18:48:13.74 ID:XaCRBAWQM.net]
引っ張ってきたい側でpowerquery使って整形したテーブルをソースに指定する

394 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:07:47.91 ID:qn2+ggVDa.net]
すいません、うまく説明できてませんでした
PowerQueryとVBAは別ブックでも同じブックでもいいです

やりたいことは
巨大なテーブルを参照してVBAで検索フォームを作りたい
です
その場合、テーブルデータを
・ユーザー定義型にまとめる
・ListObjectを使う
どちらがいいのか?が質問の意図です
改めてお願いします

395 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:45:24.46 ID:ecCVM1RA0.net]
全くの素人で申し訳ないんですけど、やりたい事

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

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

色々頑張ったけど自分で❶は出来たけど❷ハードルが高かった・・・



396 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:21:42.73 ID:titlKmjCa.net]
2のどの部分ができないのか

397 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:33:07.78 ID:qNoriQBK0.net]
If Range("B29")<>"" then Range("B1:B28").value = Range("B2:B29").value
こんな感じか?

398 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:17:04.40 ID:hVJQeY+Td.net]
>>389
IFで範囲内空白があった場合を出そうとしてたんだけどうまくいかなかったんや・・・

399 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:17:58.96 ID:hVJQeY+Td.net]
因みに入れたいのは勝利か負け。2つボタン作れば別々に行けるかな

400 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:56:32.21 ID:hVJQeY+Td.net]
>>389
ありがとう。認識できた。そしてなんとか検索して思うような結果になった!

401 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 00:13:30.21 ID:ZUsPYd03M.net]
>>382
>>384
ありがとうございます。
明日試してみます。

402 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:49:20.37 ID:CEJcVsO40.net]
>>387
巨大ならlistobjectかadoじゃないの、速度的に。
巨大じゃなきゃ何でもいいや。

403 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 06:37:24.28 ID:Md+DYeh30.net]
>>372
ちゃんとタイマー走らせて確認してるわけではないけど体感的には大して変わらない
でも完全一致で検索をかける場合matchは検索対象が存在しないとエラー停止するのに対してfindはset range変数=対象範囲.find(ryで検索をかけてやればrange変数がnothingか否かで判別可能だから個人的にはfindの方が好きかなぁ

404 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 08:33:55.10 ID:Zh6y5r970.net]
>>370
同じようなことを前考えたけど、恐らくEXCELのシートにインデックスを貼るのは無理っぽい。
ADOどころか拡張機能であるADOXでも無理だったはず。

代替案としてはSQLが使えないので、都度個別で考えるしかないけど、とある項目の最大値や最小値が入っているレコードの内容が欲しいなら基本、MATCH関数での検索となると思う。

405 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 10:22:27.56 ID:HKRI5d8YM.net]
>>370
> どのような方法が一番速く処理出来ると思いますか?
フィルターかけてSUBTOTAL(4, 範囲)



406 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 13:33:44.21 ID:NjSblaend.net]
>>382
>>384
うまくいきました。
ありがとうございます。

407 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 15:42:40.21 ID:IQ9r07oYM.net]
>>369
すまん、368だけどコード見てもやりたいことがまるでわからんので、回答書けない

408 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:07:32.87 ID:fXpRWn260.net]
初心者のため、ご存じでしたらご教授お願い致します。
エクセルから印刷する際、プリンタをカラー、モノクロをそれぞれ
自動印刷できませんでしょうか?
PageSetup.BlackAndWhite = True/Flase
以外で方法がありましたら、ご教授をお願い致します。

409 名前:デフォルトの名無しさん [2022/03/20(日) 19:41:51.49 ID:V5Xg0/PX0.net]
>>401
その方法では成功しないのですか?

410 名前:デフォルトの名無しさん [2022/03/20(日) 19:51:58.85 ID:aHWtYUUu0.net]
素人にご指導願います。

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

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

もし可能でしたら、ご教示いただけると幸いです。
よろしくお願いします。

411 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:56:19.87 ID:fXpRWn260.net]
>>402
PageSetup.BlackAndWhite = Falseで白黒印刷設定したのですが、
塗りつぶしの背景が白で印刷されてしまいます。
また、カラーの図が白黒で印刷できませんでした。
プリンタのプロパティにある印刷設定(両面、集約、カラー等)はVBAでは制御できないでしょうか?

412 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 20:02:50.72 ID:0CQh90gjM.net]
>>401
> 以外で方法がありましたら
なぜこういう人は以外でないとダメな理由を書かないのか

413 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 20:15:26.37 ID:KxZjhn5zM.net]
>>404
すまん、リロードしてなかった
っていうか最初から書けよ…

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

> プリンタのプロパティにある印刷設定(両面、集約、カラー等)はVBAでは制御できないでしょうか?
無理、
Application.Dialogs(xlDialogPrinterSetup).Show
で、ダイアログを表示させるのが精一杯

414 名前:デフォルトの名無しくん [2022/03/20(日) 20:21:02.46 ID:V5Xg0/PX0.net]
>>404
プリンタドライバをもう一つ入れて、そのドライバの初期設定を白黒にして「白黒印刷専用」とする。
このプリンタ(ドライバ)をVBAで選択して印刷する。

過去にやったことがあるけどちょっとめんどくさかった記憶
他にいい方法あるのかな

415 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 20:23:50.61 ID:Md+DYeh30.net]
>>403
チェックボックスにマクロを登録してフィルターのキーをその入力があるセルを参照すれば良いだけだと思う
例外処理があるならそれはどういう条件で省くのか分からないから自分で考えて



416 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 20:36:02.96 ID:fXpRWn260.net]
>>406
ご回答ありがとうございます。
理由も一緒に書けばよかったですね。大変失礼致しました。
以後気を付けます。

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

ご指摘の通り、PageSetup.BlackAndWhite = Trueが白黒です。失礼致しました。

417 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 20:41:31.10 ID:fXpRWn260.net]
>>407
ご回答ありがとうございます。
プリンタドライバを増やす方法、ご提案ありがとうございます。
早速トライしてみます。
ドライバーを入れた後、プリンタの基本設定で白黒を初期設定にすれば白黒専用でいけますね。

418 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 21:09:18.42 ID:j6YhEUF6d.net]
>>403
多分VBA要らない
スライサーで十分

419 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 02:46:04.32 ID:HoitaytG0.net]
スライサやタイムライン知らない人多いらしいね
マイナーなのかな?

420 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 06:08:07.49 ID:8sRo6eoq0.net]
マイナーはマイナーだと思う
MOS受けて初めて知ったわ

421 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 07:21:11.67 ID:K7MjVs2M0.net]
テーブルからしてまだマイナーだからかしら?

422 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 07:27:35.78 ID:Od0FfcR ]
[ここ壊れてます]

423 名前:PM.net mailto: ブックの共有するとテーブルが使えない
共有機能とテーブルどちらを選ぶとしたら会社では共有を選ぶ
糞共有機能は早く廃止してほしいな
[]
[ここ壊れてます]

424 名前:デフォルトの名無しさん [2022/03/21(月) 08:06:13.98 ID:S9+WMeZFH.net]
誰か教えてください
各営業所から毎月送られてくる実績ファイルを一つのブックに集計するマクロを作りたい
一つのフォルダに全てのブックを入れてループ処理するマクロ自体はできたんだけど肝心の転記の仕方がわからない
具体的には各ファイルの指定のセルから集計表ファイルの指定のセルに営業所名ごとに転記したい
営業所ファイルには4〜3月まで縦に月毎に実績が並んでいて集計表のファイルは横に月毎になってるって感じ
どうしてもわからなくてどなたか助けてください

425 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 08:19:15.34 ID:/kHY2rERM.net]
powerqueryだな



426 名前:デフォルトの名無しさん [2022/03/21(月) 08:24:32.18 ID:S9+WMeZFH.net]
>>417
ありがとうございます
パワークエリってやつですかね?
検索かけたら使い方分かりそうでしょうか?

427 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 08:52:49.57 ID:K7MjVs2M0.net]
>>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

428 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 09:00:07.15 ID:8sRo6eoq0.net]
>>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

保存ファイルのパスと転記セルの範囲変えたら使えると思う

429 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 09:06:14.38 ID:Yo31hjL10.net]
>>397
ありがとうございます。
やはりEXCELのシートにINDEXを設定するのは無理なんですね。

>>398
ありがとうございます。
残念ながら20万件100項目という量のせいか、
フィルターを掛けるとそのまま固まってしまい、いつ返ってくるか、そもそも返ってくるのかすら分からない状況になりました。

430 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 09:14:48.04 ID:8sRo6eoq0.net]
>>421
そもそもフィルター掛ける必要があるのかどうかってのもあるけど・・・
ぱっとおもいつくのは

・forで回して別シートに転記。量が少なければそこまでかからんはず。量が多いとかなり大変
・別シートにfilter関数。かなり軽いけど、その量に対してはやったことないな
・スプレッドシートでquery関数。軽さならこれが最強で、めちゃくちゃ軽い

431 名前:デフォルトの名無しさん [2022/03/21(月) 16:06:54.19 ID:YtFKrPKNa.net]
>>419
ありがとうございます
見て参考にさせていただきます

432 名前:デフォルトの名無しさん [2022/03/21(月) 16:10:10.41 ID:YtFKrPKNa.net]
>>420
ありがとうございますこの構文のでいける感じですか?
ホントど素人で申し訳ないんですけど転機の構文は何をしてる感じでしょうか?

433 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 16:14:49.98 ID:ombAFbaLM.net]
>>420は要点をコンパクトに上手に説明してる
これが理解できないなら自分で最終回答に辿り着くのは無理だよ

434 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 16:21:01.88 ID:8sRo6eoq0.net]
>424
転記の部分は値でコピーペーストだよ
試しに動かしてみたほうが早いと思う

435 名前:デフォルトの名無しさん [2022/03/21(月) 16:38:45.50 ID:YtFKrPKNa.net]
>>425
>>426
ありがとうございます
まずは動かしてみます



436 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 16:43:02.21 ID:HoitaytG0.net]
テーブルってまだ普及していないねかな?

437 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 16:50:26.11 ID:DBpwCepOM.net]
永遠に普及しないでしょうね
列島猿はセル結合したり自分で色塗ったり線引いたりするのが大好きで、お仕着せのDBにデータだけ放り込むみたいなのは苦手なので

438 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 16:56:11.28 ID:8sRo6eoq0.net]
全面的に同意
テーブルで表作ったらテーブルを解除しろって言われるレベル

439 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 17:19:32.38 ID:fDbYf0xJ0.net]
>>424
転記する際に縦横を置換したいんじゃねえの?
420の例にはそれが入ってないかと

440 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 17:21:13.79 ID:fDbYf0xJ0.net]
テーブルでも椅子でもいいからさっさとやれと言われるわしら下っ端

441 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 17:57:58.00 ID:bPJRBgFUM.net]
>>416
マクロ記録開始してその転記の操作してみればいいかと

442 名前:デフォルトの名無しさん [2022/03/21(月) 19:13:04.04 ID:S9+WMeZFH.net]
>>431
あーそうなんですね
そこ大事なところなもんで…
ありがとうございます

443 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 19:37:57.87 ID:HoitaytG0.net]
いつも思うのだけど、これだけExcel情報が世の中に溢れているのにセルご法度の結合だの色塗りまくるだの改行だのする人ばかりなのは何故なんだろうね??
パソコン雑誌とか読んで勉強していないのかなと?

444 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 19:43:19.70 ID:zSyDDKWUH.net]
>>435
www2.odn.ne.jp/~cbl97790/shinsakutenjishitu.htm

445 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 19:53:51.30 ID:8sRo6eoq0.net]
>>435
業務改革を微塵も考えていないから
一日8時間で、最初に与えられたルーチンが回ればそれで良いと考えてる人がほとんど
なんでそうなってるかは、知らん



446 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 20:06:38.09 ID:7hRN3rZ2M.net]
>>435
別にExcelの達人になるわけじゃないし
そもそも結合するなと言うなら縦方向の「選択範囲内で中央」を実現しやがれ

447 名前:デフォルトの名無しさん [2022/03/21(月) 20:11:42.48 ID:S9+WMeZFH.net]
>>433
それも思ったんですけどそれだと恐らく一つの営業所の実績を一つのセルにコピーする操作になってしまいそうで…

448 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 20:23:41.52 ID:2j3OjuAE0.net]
>>439
ここまでの説明で理解できてないようなので
とりあえず営業所毎ファイルと集計表ファイルをアップロードしないと話が進まない

449 名前:デフォルトの名無しさん [2022/03/21(月) 20:42:56.54 ID:S9+WMeZFH.net]
>>440
オケ
さすがにそこまでは出来ないので色々試してみます
ありがとうございました

450 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 20:43:57.15 ID:8sRo6eoq0.net]
>>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

451 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 21:18:25.50 ID:8fSFwG7JM.net]
>>439
思うだけで手を動かす気はないのね…
いち抜けた~っと

452 名前:デフォルトの名無しさん [2022/03/21(月) 21:20:10.88 ID:S9+WMeZFH.net]
>>443
ごめんなさい会社のファイルなので今日できんのよ
明日行ったらやってみる

453 名前:デフォルトの名無しさん [2022/03/21(月) 21:21:07.73 ID:S9+WMeZFH.net]
>>442
ありがとうございます!
やってみます!

454 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 21:49:42.78 ID:HoitaytG0.net]
日本のExcelのレベルが低いからExcel講師やパソコン教室が潤うと。

455 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 22:13:13.78 ID:NuDNOSQMd.net]
ループ文とか条件文とかユーザーフォームとかクラスとか使ってごちゃごちゃやってるけど結局のところファイルの開閉と転記作業しかしてない事に気づいた

転記があれば何でも出来る



456 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 23:00:27.32 ID:Rbd9piL90.net]
転記の子

457 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 00:36:53.70 ID:000FKf5P0.net]
始めたてのド素人ですがご教示頂けると幸いです。
表の列ごとにランダムに入っている異なるフォントの色で正負を判断して最終行に和と差の合計値を出力したいのですが可能でしょうか?
詳しく言うと赤色が負として、黒色が正としてセルに数値が手打ちされてます。
列の最終行を取得しsum関数を挿入することはできるのですが、フォントの色で正負を判断して合計値が出せるのか教えていただけないでしょうか。

458 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 00:49:54.42 ID:kEBDDtio0.net]
>>449
もともとエクセルにはマイナスの数字を自動的に赤くする機能がある
その機能で色を変えてるんだと集計の方法も変わってくるから、まずはそこを確認して

459 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 01:08:13.62 ID:TibwPpTv0.net]
書式に辿り着ければ
自ずと答えが見つかろうぞ

460 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 01:19:04.08 ID:KVIRUNm3d.net]
そもそもVBA不要
sumif関数で出来る

461 名前:デフォルトの名無しくん mailto:sage [2022/03/22(火) 02:43:58.13 ID:d3YPRjya0.net]
きっとこれは黒色の負とか青色の正とかあって
あえて色で集計したいんだろうな


と、深読み

462 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 12:14:00.76 ID:000FKf5P0.net]
ご返信ありがとうございます。
表のシートが種類ごとにあって量が千を超えているので自動化したい所存です。
前任が手書きの台帳をエクセルに落してくれたまでは良かったのですが、他の社員が手書きのときと変わらず正の値で色のみ変えて入力するため、毎年年度末になると延々と手作業で何時間も単純作業を強いられるのでなんとかならないかと思案しておりました。

463 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 12:33:30.37 ID:jGZXGfWV0.net]
条件書式でゼロ以上は赤字にするとかでもダメなんか?
逆にVBA使った方が遅かったり不便にかりそうな案件だと思うんだが

464 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:33:25.27 ID:MYdjPEb1M.net]
>>421
> 残念ながら20万件100項目という量のせいか、
> フィルターを掛けるとそのまま固まってしまい、いつ返ってくるか、そもそも返ってくるのかすら分からない状況になりました。
PC買い替えろ
30万行x300列に数値データを埋めてやってみたけどフィルター処理なんてほぼ瞬時に終わるぞ

465 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:38:08.96 ID:mA7AOTDM0.net]
他の社員が入力してるものだからなあ
集計よりも入力用のシートを何とかできたら手っ取り早いんだがそれは無理なんかな



466 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:43:49.21 ID:R4HxgmoiM.net]
色付けるよりマイナス記号打つ方が速いだろうに……
ご苦労さまでした

467 名前:デフォルトの名無しさん [2022/03/22(火) 13:48:33.03 ID:C94PEu1/d.net]
>>454
はっきり言えばこんなこともできないお前は手を出すな

468 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 14:03:10.79 ID:l3SAD7eYM.net]
>>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
として、一気に書き換えちゃうのがいいかも

469 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 19:08:50.48 ID:Gjrul4fP0.net]
>>456
流石に仕事場のPCを勝手に買い替えるのは私には出来ませんし、
最終的にフィルター等の処理は使用せずにかなりの高速化をはかることが出来ました。

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

今まで質問に答えて頂いた方、色々参考にさせていたきました。
ありがとうございました。

470 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 20:15:28.30 ID:WUXZwGEtd.net]
>>454
やはりVBAは不要
オートフィルターのフォント色で絞り込み、subtotal関数で十分

471 名前:デフォルトの名無しさん [2022/03/22(火) 23:22:39.90 ID:VOPCLAbN0.net]
本当にド素人なのでお許し下さい
ここに3枚の請求書(Excelデータ形式)があり、それぞれsheet1、sheet2、sheet3にあります
フォーマットはバラバラで文字や配置が異なります
これをsheet4で「支払日」「取引先名」「取引内容」「税込金額」を一覧表にしたいのです
こういうことはVBAでは可能でしょうか?
可能であれば、難易度はどの程度でしょうか?

*実際には請求書は数百枚あります

472 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 23:26:23.97 ID:b3mXLXMM0.net]
>>463
フォーマットが統一されていれば、vbaでやる意味はある
フォーマットが統一されていない場合、vbaで書く意味がほとんどない。手作業でコピペするのと変わらん

473 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 23:26:42.94 ID:b3mXLXMM0.net]
かわらん、と言ったけど手作業でコピペする方が早いわ

474 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 23:43:05.71 ID:6kcI/g5C0.net]
>>461
そのフィルターが処理するために、
全データをメモリに載せようとするから、メモリ不足でフリーズする

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

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

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

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

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

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

でも、この方法では、全データをソートしたりできない。
自分で実装できないから、結局、データベースを使うしかない

475 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 00:15:35.00 ID:HTP/aspP0.net]
>>461
せめてどうやったかぐらい書けよ

つかエクセルからエクセルブックにADOでSQLとか、余計なオーバーヘッドで遅くなるイメージしかないんだがな
それで高速化できるようなケースがあるのか?



476 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 00:34:00.08 ID:3vbjDh2k0.net]
。。同志達は例の追加された新しい関数の情報つかんでいるよね?
なんだか凄そうな予感

477 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 01:05:25.56 ID:MTKAae3e0.net]
ワークシート関数の追加のニュースなら見たけどVBAにも何か追加されるん?
https://forest.watch.impress.co.jp/docs/news/1395929.html






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

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

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