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


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

Excel VBA 質問スレ Part74



1 名前:デフォルトの名無しさん mailto:sage [2021/12/20(月) 01:40:59.22 ID:jnlr9GaR0.net]
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ

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

※前スレ
Excel VBA 質問スレ Part73
https://mevius.5ch.net/test/read.cgi/tech/1631485799/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

641 名前:デフォルトの名無しさん [2022/01/25(火) 11:59:54.76 ID:7EThQbwZM.net]
オブジェクティブCは?

642 名前:デフォルトの名無しさん [2022/01/25(火) 12:15:21.94 ID:zQXNzX5la.net]
>>628
自分ができないのにできる人が来ないとか言うなよ

643 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 12:31:10.86 ID:zFwMgogDd.net]
「オブジェクト構造」と「オブジェクト指向プログラミング」を混同していませんか

644 名前:デフォルトの名無しさん [2022/01/25(火) 12:42:30.48 ID:Y5KLOHGW0.net]
自分の要求を完璧に実行してくれる天才に
金を払わないでもやってくれる人ってなかなかいないんだよね

645 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 13:18:00.17 ID:j/cJSCFFd.net]
事務員に+αでVBA知識なんだから月給なんて20万程度での募集なんでしょ
やめとき

646 名前:デフォルトの名無しさん [2022/01/25(火) 14:06:19.97 ID:WI95qNC1M.net]
テスト

647 名前:デフォルトの名無しさん [2022/01/25(火) 14:10:24.68 ID:WI95qNC1M.net]
>>628
詳細をお伺いしたいので、よろしければ一度ご連絡下さい
vba_20220125@yahoo.co.jp

648 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 14:50:40.66 ID:CplOG10X0.net]
余程VBAが好きならその仕事を受けるのはアリだと思いますが、それでも知らない会社のシステム組むのは恐いですな。
何かあった時の各種トラブル対応を完璧にできる人じゃないとキツイのでは?

649 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 14:52:58.84 ID:CplOG10X0.net]
>>634
なるほど。同志の言うとおり
作業セルも作り方が人によりけりなので統一すべきですね。



650 名前:デフォルトの名無しさん [2022/01/25(火) 15:04:52.93 ID:bToP/k2z0.net]
大介って光2コンボ好きなのか

651 名前:デフォルトの名無しさん [2022/01/25(火) 16:23:40.81 ID:KtMUUOjX0.net]
右から来たものを左へ受け流す

652 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 19:20:32.27 ID:mNb42c/J0.net]
Excel VBAで、Windowsサーバの管理とか
OracleとかのDB連携システムを構築できれば
月収40〜50万は余裕でもらえるけどね。

一般職よりIT技術者になった方が
年収は一気に上がるのに。

653 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 19:43:09.58 ID:bToP/k2z0.net]
>>648
それはさすがにMSSQLサーバー必須
vbaはほとんど使わない

構築だけならアホみたいに余裕

654 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:00:58.11 ID:mNb42c/J0.net]
ん?意味わかってないね…(汗

Excel のフォームをフロントエンドにして
データベース検索できるようにするんだよ。

Excelでボタン押すと、入出力フォームが出てきて
データベースへの読み書きを簡単にできるってやつ。

VBA上級者なら簡単に作れる。

655 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:05:26.58 ID:mNb42c/J0.net]
あとは、 Excelフォームから、WindowsサーバにAPIでアクセスして
ハードウェアのリソース管理とか、AD管理できるようにするとか。

サーバーの監視部隊が定期的に手作業でやってる管理業務を自動化する。

AD とは、Active Directory のことね。

656 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:09:23.34 ID:mNb42c/J0.net]
>>649
SQL Serverじゃなくても、VBAから
OracleでもMySQLでも連携可能だよ。

657 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:16:10.91 ID:ZGZoh/tR0.net]
>>651
フロントエンドにExcelを選定する時点で怪しすぎるわ

658 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:18:03.17 ID:ncFbLrOnM.net]
VBAでイキってて草

659 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:19:27.46 ID:mNb42c/J0.net]
もちろん、DBの深い知識とか、Windowsサーバを
管理できる知識がないとできないけどね。

どちらもSQLの読み書きは必須。



660 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:19:40.81 ID:CplOG10X0.net]
酷い言い方する人は、VBAはプログラミングではないと言いきる人いますからね

661 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:21:51.60 ID:Y5KLOHGW0.net]
吾輩は猫であるとかいう人もいるからな

662 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:22:00.61 ID:bToP/k2z0.net]
>>653
うん・・・
SQLServerの情報は、accessで引っ張って来て終わりなんだ
VBAは使わないはず

663 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:22:19.53 ID:mNb42c/J0.net]
ん?Access でも、Word でも作れるよ。

MS Office を使えばコスパ良く自動化できる
ってのを、割と知らない無能が多いから
ヒントを書いたまでだけど?

664 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:25:27.78 ID:mNb42c/J0.net]
なぜかバカほど高価なミドルウェアを使いたがるけど
VBAで自動化したらタダでできるのに。

オレはVBSでも作ったけどね。
VBSならメモ帳だけでプログラミング可能。

665 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:28:01.06 ID:mNb42c/J0.net]
>>656

ああ居る居る。
Javaとか、Pythonじゃないととか…
ただマウント取りたがる無能なんだろうね。

VBAは、Officeのリソースしか使わないから
コストパフォーマンス最高なのに。

666 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:31:39.60 ID:mNb42c/J0.net]
>>658

Accessなら、標準でSQL Serverとの連携は
VBA使わなくても簡単にできるけど、

フォームを使いたい場合は、VBA必須。

667 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:35:14.51 ID:mNb42c/J0.net]
MS Officeが無い場合でも JavaScriptでも
できるけど。

とにかく色んな自動化は、格安でできるってこと。

弘法筆を選ばずとはこの事。笑

668 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:38:14.03 ID:mNb42c/J0.net]
まあ、給料上げたいなら
努力して頑張りましょう。

669 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:40:51.27 ID:f4GoSiUSM.net]
Excel VBAでも作れるけどC#とかの方が全然楽だぞ
定期的なADの操作とかならPowerShellでいいし
VBAしか書けないというのでなければ.NETFrameworkの恩恵を受けられないVBAの出る幕はない



670 名前:デフォルトの名無しさん [2022/01/25(火) 20:41:24.90 ID:4M+ZFVtxM.net]
いつもの馬鹿か?

671 名前:デフォルトの名無しさん [2022/01/25(火) 20:44:12.39 ID:EmlIIuq10.net]
ID:mNb42c/J0

いつもの知ったかの馬鹿?

672 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 20:46:43.85 ID:mNb42c/J0.net]
コスパの話をしてんのよ。

わかるかな?無能さん。

673 名前:デフォルトの名無しさん [2022/01/25(火) 20:58:23.53 ID:EmlIIuq10.net]
>>668
無能はお前だろ、馬鹿が
コスパなら>>665が書いてるようにPowerShellだろうが

674 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 21:01:31.55 ID:mNb42c/J0.net]
もちろん、PowerShellでも作れるし
他にもテキストベースなら
JavaScript、VBSでもつくれるし。

675 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 21:01:47.49 ID:7v92mOzc0.net]
VBAスレなのになぁ

676 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 21:04:24.62 ID:mNb42c/J0.net]
無能はスマソ。
Windows環境なら、簡単に自動化する方法は
沢山あるよって話でした。

さようなら。

677 名前:デフォルトの名無しさん [2022/01/25(火) 21:28:25.73 ID:EmlIIuq10.net]
>>672
話しを誤魔化して逃げるのかよ、馬鹿

678 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 21:31:06.39 ID:Ezk4VrXqM.net]
放置しとけよw
別に今時のWindowsならC#でもVB.NETでも使えることすら知らんみたいだし

679 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:00:31.09 ID:+A6ImuRo0.net]
>>604

なんかもうため息というかなんというか。要は上司の「俺が理解できないから」だよね。
悪い意味での日本流。東アジア流かもしれん。

偶然の産物かもだけど、「長々とした入れ子は駄目」は賛成する。

4段以上のネストとか30行以上の関数とか俺の頭じゃバッファオーバーフロー。



680 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:08:37.63 ID:+A6ImuRo0.net]
If( 正当条件1 ) Then
  If( 正当条件2 ) Then
    If( 正当条件3 ) Then
      If( 正当条件4 ) Then
        長〜い正当処理1
        長〜い正当処理2
        長〜い正当処理3
      Else
        エラー4
    Else
      エラー3
   Else
    エラー2
  Else
   エラー1


681 名前:End If

こんなの見ると、「初手でエラー全部弾けよ」と思う。
[]
[ここ壊れてます]

682 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:11:24.49 ID:Zmf/5OMz0.net]
まあまあ、自分が昔組んだコード見ると何でこんな面倒なことやってたんだろうってみんなが通る道だし

683 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:16:18.25 ID:bToP/k2z0.net]
>>676
こういう場合どうすべきかね
フラグ立ててfalseならexitsubにしてしまうか
gotoかエラーコードで最後に飛ばすか

684 名前:デフォルトの名無しさん [2022/01/25(火) 22:21:46.97 ID:mNb42c/J0.net]
いま、Youtubeひろゆきライブ配信やってるから

よく聴いて、社畜奴隷の洗脳を解きなさいな。

685 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:23:22.62 ID:CplOG10X0.net]
Office田中先生、近々ようつべに復帰するみたいですね。
内容は当たり外れあるからアレだけど、あの方の喋りはひょうきんで楽しい。

686 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:24:31.01 ID:CplOG10X0.net]
>>677
恥ずかしくなりますよね昔のシート見ると。
当時の自分は何がしたかったのかみたいな。

687 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 22:32:38.66 ID:T9L9nj8SM.net]
>>676 なら

If Not 正当条件1 Then
 エラー1
ElseIf Not 正当条件2 Then
 エラー2
ElseIf Not 正当条件3 Then
 エラー3
ElseIf Not 正当条件4 Then
 エラー4
Else
 長〜い正当処理1
 長〜い正当処理2
 長〜い正当処理3
End If

とする、面倒なのは

If 正当条件1 Then
 ちょっとした処理1
 If 正当条件2 Then
  ちょっとした処理2
  If 正当条件3 Then
   長〜い正当処理1...3
  Else
   エラー3
 Else
  エラー2
Else
 エラー1

のケースでこの時はルーチン分けるかGotoで途中脱出させると思う

688 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 23:09:39.57 ID:ZGZoh/tR0.net]
Select Case 0
Case 正当条件1
エラー1
Case 正当条件2
エラー2
Case 正当条件3
エラー3
Case 正当条件4
エラー4
Case Else
長〜い正当処理1
  長〜い正当処理2
  長〜い正当処理3
End Select

どやさ

689 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 23:20:00.64 ID:Y5KLOHGW0.net]
Call 長い正当処理1to3



690 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 23:22:36.33 ID:DW1OPm0+0.net]
>>676
VBAはショートサーキットしないからIfを何段も並べた方が効率いい場合がある
けど、この場合はエラーも4種類だから判定式を1つにまとめるわけにいかない

この書き方が読みにくいと思うならIfからエラーまでをそれぞれ4つのFunctionに飛ばすかな

691 名前:デフォルトの名無しさん mailto:sage [2022/01/25(火) 23:29:04.02 ID:UWkwB/rRd.net]
頭が悪いからずっとこれだわ

If エラー条件1 Then
エラー処理
Exit Sub
End if

If エラー条件2 Then
エラー処理
Exit Sub
End if

If エラー条件3 Then
エラー処理
Exit Sub
End if

正当処理

692 名前:デフォルトの名無しさん [2022/01/26(水) 01:52:17.01 ID:ULWJ4UsX0.net]
>>679
馬鹿が底の浅い知識をひけらかして嘘を書いて、捨てゼリフ吐いて逃げたのにノコノコ戻ってきて再び捨てゼリフと
馬鹿は自分の拙さを知らずに馬鹿な自分が見えるだけの世界が全てだと思っているから馬鹿なんだよ

693 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 06:27:00.95 ID:0epn3Uk/M.net]
>>686
サブルーチンに切り出せるならそれが一番見易い

694 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 11:26:17.93 ID:RGV8ouxS0.net]
パッと思い付いてすぐコードを書ける自体有能だと思いますよ。
みんな凄い。

695 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 11:54:57.36 ID:xGOCvJmUr.net]
たしかにVBとか普段書かないからif thenおかendなんて思い出せないよな

696 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 13:10:14.89 ID:q0HuFlPw0.net]
ちゃんと単体結合テストやるところの場合だと
処理毎に、Function に分けるのが吉。

697 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 14:42:22.30 ID:ip0aOcF2M.net]
みんな試行錯誤してきたのがよくわかる

698 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 16:16:07.18 ID:RGV8ouxS0.net]
Excel全般て本当に努力しないと使えないってのはウソじゃないですな

699 名前:デフォルトの名無しさん [2022/01/26(水) 16:21:39.28 ID:ykAsNY55r.net]
Excel VBAビギナーの頃
5000万の案件をやり遂げた事あるけど
VBの入り口としては良いよね。

昔はVBAを入り口に、VB6.0 に移行できたから
良かったんだがな。



700 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 18:39:36.99 ID:WAP1y4aa0.net]
>>623
まぁ他言語をやってない奴の意見なんてそんなもんだろな。
VBAで使えるものもあれば使えないものもある。

テンプレートメソッドパターンなんかは使えないけどストラテジーパターンなんかは使える。

そういうの使った際に分岐が減るからUT楽になるかなー、とか、それ使う程の規模かなー、とか
楽な方を選べるってことだよ。

701 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 18:53:39.06 ID:YVr9NW6iM.net]
>>695
> ストラテジーパターンなんかは使える。
無理じゃね?

702 名前:デフォルトの名無しさん [2022/01/26(水) 19:15:39.62 ID:xR2ItXtPM.net]
グローバルしかない古代BASICに比べれば天国じゃよ

703 名前:676 mailto:sage [2022/01/26(水) 20:11:08.97 ID:+JbM4Kut0.net]
みんなやっぱ困ってるお題なんだなこれ。反応ありがとう。

俺は

Function Func(Args)

 Func = TestArguments( Args ) // ←このへんは異論出るかもだけど、内部関数で引数テストはありだと思う。

 If Func <> Normal Then
  Exit Function
 EndIf

 Call 長〜い処理1をファンクションにしたもの
 Call 長〜い処理2をファンクションにしたもの
 Call 長〜い処理3をファンクションにしたもの

End Function

てな感じをイメージしてた。VBAの文法的にはむちゃくちゃかもだけど、最近書いてないのでそこは許してw

C風に

If ( (Func = TestArguments(Args))<>Normal ) Then て書けるのかな。

704 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 20:33:27.76 ID:Rwt/NS3J0.net]
エラーとしてまとめるってのを昔見たことあるけど、見づらいかなぁ

Sub Func()
On Error GoTo err

flg = True

If flg Then
err.Raise Number:=513, Description:="内容"
End If

' Call 長〜い処理1をファンクションにしたもの
' Call 長〜い処理2をファンクションにしたもの
' Call 長〜い処理3をファンクションにしたもの
Exit Sub

'エラー処理
err:
MsgBox err.Number & vbCrLf & err.Description
End Sub

705 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 20:50:31.29 ID:8zLJqphFM.net]
>>698
> C風に
> If ( (Func = TestArguments(Args))<>Normal ) Then て書けるのかな。
書けるけど君の思ったようには動かない、例えば
Work = (Func = TestArguments(Args))
は TestArguments() の戻り値が Func と同じなら True、違うなら False が Work に入るから、それと Normal を比較することになる
※ 実際には Func は再帰呼出しとなるが引数が指定されてないのでエラーになる

706 名前:デフォルトの名無しさん mailto:sage [2022/01/26(水) 21:48:41.76 ID:+JbM4Kut0.net]
>>700
なる。ありがとう。

707 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 01:44:43.12 ID:f6ffcYr70.net]
>>699
わざわざエラーとかせずに、普通にGOTOで飛ばせばいい

局所的にGOTO使っても可読性は落ちないし、むしろわかりやすいと思ってる

708 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 02:13:33.38 ID:iz7yjT+P0.net]
後藤使うのは素人

709 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 07:25:42.82 ID:EosWc+uxM.net]
>>702
Raise ならエラー情報(番号とメッセージ)を伝えられると言うメリットがあるな



710 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 09:17:43.26 ID:ISwrtggt0.net]
>>702>>704
そう、この場合のメリットは>>704の通り
そして他のエラーもまとめることができるのでシンプルになる

>>703
この場合はgotoかエラー以外ない

711 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 09:49:42.96 ID:jZ2PQbyQ0.net]
>>696
何故そう思う?

712 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 10:10:14.97 ID:pNJphUuoM.net]
>>706
CallByName() とかを使ってやってやれなくは無いけど無理矢理感あるしな

Strategyパターンはアルゴリズムを記述するサブルーチンへの参照をデータ構造の内部に保持する。
このパターンの実現には、関数ポインタや関数オブジェクト、デリゲートのほか、オーソドックスなオブジェクト指向言語におけるポリモーフィズムと委譲、あるいはリフレクションによる動的ダック・タイピングなどが利用される。

VBAにもまともな関数ポインタがあればね…

713 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 10:41:53.58 ID:jZ2PQbyQ0.net]
>>707
そもそもクラスで普通に移譲が出来るんだから
出来るとは思わないか?
もっとも、継承が使えないので
Is a関係だろうがhas a関係だろうが
移譲に頼ることになるだろうけど。

714 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 11:20:16.68 ID:NmFY0FMsM.net]
>>708
ああ、インターフェースはあるから移譲はできるか

715 名前:デフォルトの名無しさん mailto:sage [2022/01/27(木) 12:29:10.84 ID:iz7yjT+P0.net]
シンプル・イズ・ベスト。
スティーブ・ジョブズの信条でもあった。

凡才は複雑を好み、天才はシンプルを好む。

716 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 00:04:37.97 ID:sv+QVprG0.net]
WorkSheetのEventで、
テーブルのフィルタソート機能(昇順or降順)をユーザが使ったときのEvent
ってできるんでしょうか?
最悪、"フィルタ機能を使った"時点でも取得できれば。。。

717 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 00:19:09.31 ID:6Z68BDtw0.net]
>>711
ない

718 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 03:12:47.26 ID:sv+QVprG0.net]
>>712
まじですか、、、ありがとうございました。

719 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 12:32:58.97 ID:EweXC9jR0.net]
すんません、膨大なデータ量の集計を任されて困ってます。
例えばA1セルに
「1.5G」とあるものは
Gを取った上で1024を3乗し、B1に表示
「256M」とあるものは
Mを取った上で1024を2乗し、B1に表示
「504K」とあるものは
Kを取った上で1024を掛け、B1に表示
みたいな便利なことができる関数があれば教えて頂きたく。
SUBSTITUTEで文字を取ったりVALUEで数字だけ抜き出したりしてみても、そこに条件判定を組み込むことが出来なくて…。



720 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 13:00:06.93 ID:6Z68BDtw0.net]
>>714
Excelのバージョン書いて

721 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 13:09:05.83 ID:tnq08GUKM.net]
>>714
あんまりスッキリした方法じゃないけど、単位ごとに処理を分けて並べるぐらいしかないのでは
式はもうちょっと整理できると思うけど、とりあえず動くやつ
=IF(RIGHT(A1,1)="G",LEFT(A1,LEN(A1)-1)*1024^3,IF(RIGHT(A1,1)="M",LEFT(A1,LEN(A1)-1)*1024^2,IF(RIGHT(A1,1)="K",LEFT(A1,LEN(A1)-1)*1024,A1)))

722 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 13:43:11.42 ID:EweXC9jR0.net]
>>715
Microsoft 365 MSO(16.0.13801.21004)
>>716
本当にありがとう、助かります。

723 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 13:54:48.79 ID:SUVzbVrJ0.net]
powerとfindで考えてたけど、あんまり変わらんかった

724 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 14:06:54.61 ID:54qKpcGwM.net]
>>717
365 なら
=SWITCH(RIGHT(A1, 1), "G", 1024^3, "M", 1024^2, "K", 1024) * LEFT(A1, LEN(A1) - 1)
ただし、最後が GMK でなかった時はエラーになるのでその場合はIFERROR()で回避かな

725 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 14:10:37.46 ID:pNi2eyZM0.net]
集計なら式使わずに素直にVBAで処理すれば?

726 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:01:21.24 ID:EweXC9jR0.net]
>>719
ありがとう、それも問題なくいけました。

727 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:16:30.86 ID:6Z68BDtw0.net]
>>721
1K未満の単位の付かない数値に対応したやつ
=LET(u,RIGHT(A1,1),p,SEARCH(u,"kmg"),IFERROR(LEFT(A1,LEN(A1)-1)*1024^p,A1))

728 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 15:34:49.10 ID:EweXC9jR0.net]
色々ありがとう。使わせていただきます。

729 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 16:00:55.15 ID:Pw9WEPs80.net]
>>723
スピードを求めるならVBAでやった方がいい。
基本、VBAよりCELLに入れた数式の方が計算早いけど、
値を設定するたび再計算が走るのでは当然遅くなる。

単位をRightの1文字切り取って使うかInStrRevで1文字切り取って使うかは自由だし、
数値部分も最後のひと文字を抜いて数値変換する方法はどうにでもなるはずだから、
後は切り取った単位で冪乗計算の乗数を変えてあげれば簡単に行けるはず。



730 名前:デフォルトの名無しさん [2022/01/28(金) 16:07:42.05 ID:eEIZm5jJ0.net]
膨大な行数になるようなら
関数よりマクロの方が断然軽い。

マクロの記録で瞬間でできるし。

731 名前:デフォルトの名無しさん [2022/01/28(金) 16:08:26.59 ID:eEIZm5jJ0.net]
記述すら必要なし。

732 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:30:28.61 ID:vX0FG/YWd.net]
マクロの記録で瞬間て、どうやるの?

733 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:31:33.84 ID:MK2zcruJ0.net]
一瞬で

734 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:35:47.36 ID:sJpZ8snBM.net]
この程度なら関数の方が速いと思うぞ
マルチスレッドで動くし
再計算も変化したセルに関連するところしかやらないから問題にはならないと思う

735 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:36:25.47 ID:u6dzd5iJd.net]
ここはVBAスレだから質問はスレチだけどみんな優しいね

736 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:49:38.97 ID:qJef3P+M0.net]
>>730
はて?

「Excel VBA 質問スレ Part74」
とあるが?

737 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 17:57:01.02 ID:sJpZ8snBM.net]
> ここはVBAスレだから(計算式の)質問はスレチだけどみんな優しいね

738 名前:デフォルトの名無しさん [2022/01/28(金) 18:14:34.37 ID:ZcQb+fCA0.net]
>>714
こんな奴に作業を任せるとかそもそも間違えている

739 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 18:21:53.88 ID:np+yf06a0.net]
今のエクセルの計算式は基本マルチスレッドでやるから、VBAでちまちまやるよりは早いだろうけど
このスレ的にはVBAで関数作るんが正解じゃないかと思った

で、ふと思ったが、VBAの関数をワークシートの計算式で使ったら、シングルスレッドで処理されるのかな



740 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 18:58:00.84 ID:Qmj8/oz70.net]
>>711
どうしても「そのテーブルのフィルタソート機能を使用した」時点を起点に処理を始めなければならないとすれば、
Worksheet_SelectionChangeで、その特定のテーブルの特定の列を走査して昇順または降順にデータが並んでいれば「フィルタソート機能を使った」と判定する、ぐらいしか思いつかない
たまたまソートする前にデータが整列してしまっていた場合や処理が完了した後に再度処理が走ってしまうので、どこかにフラグを作って管理する必要もあると思うけど
あと、ソートする列に数値と文字列やブール値などが混在している場合も判定に注意が必要かと思う

741 名前:デフォルトの名無しさん mailto:sage [2022/01/28(金) 19:12:04.41 ID:SUVzbVrJ0.net]
>>730>>732
vbaより数式や標準機能が簡単なら、そっちで回答するだけだよ
「excel&vba」なのか「eccel|vba」かは解釈次第だが、俺は後者だと思う






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

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

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