!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
探検
Excel VBA 質問スレ Part74
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ d3fd-v8OD)
2021/12/20(月) 01:40:59.22ID:jnlr9GaR0653デフォルトの名無しさん (ワッチョイ 5f7c-U/bu)
2022/01/25(火) 20:16:10.91ID:ZGZoh/tR0 >>651
フロントエンドにExcelを選定する時点で怪しすぎるわ
フロントエンドにExcelを選定する時点で怪しすぎるわ
654デフォルトの名無しさん (ブーイモ MM6b-tDnv)
2022/01/25(火) 20:18:03.17ID:ncFbLrOnM VBAでイキってて草
655デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 20:19:27.46ID:mNb42c/J0 もちろん、DBの深い知識とか、Windowsサーバを
管理できる知識がないとできないけどね。
どちらもSQLの読み書きは必須。
管理できる知識がないとできないけどね。
どちらもSQLの読み書きは必須。
656デフォルトの名無しさん (ワッチョイ 5fda-oAy5)
2022/01/25(火) 20:19:40.81ID:CplOG10X0 酷い言い方する人は、VBAはプログラミングではないと言いきる人いますからね
657デフォルトの名無しさん (ワッチョイ 7fda-4V6Q)
2022/01/25(火) 20:21:51.60ID:Y5KLOHGW0 吾輩は猫であるとかいう人もいるからな
658デフォルトの名無しさん (ワッチョイ a768-IuBN)
2022/01/25(火) 20:22:00.61ID:bToP/k2z0659デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 20:22:19.53ID:mNb42c/J0 ん?Access でも、Word でも作れるよ。
MS Office を使えばコスパ良く自動化できる
ってのを、割と知らない無能が多いから
ヒントを書いたまでだけど?
MS Office を使えばコスパ良く自動化できる
ってのを、割と知らない無能が多いから
ヒントを書いたまでだけど?
660デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 20:25:27.78ID:mNb42c/J0 なぜかバカほど高価なミドルウェアを使いたがるけど
VBAで自動化したらタダでできるのに。
オレはVBSでも作ったけどね。
VBSならメモ帳だけでプログラミング可能。
VBAで自動化したらタダでできるのに。
オレはVBSでも作ったけどね。
VBSならメモ帳だけでプログラミング可能。
661デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 20:28:01.06ID:mNb42c/J0662デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 20:31:39.60ID:mNb42c/J0663デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 20:35:14.51ID:mNb42c/J0 MS Officeが無い場合でも JavaScriptでも
できるけど。
とにかく色んな自動化は、格安でできるってこと。
弘法筆を選ばずとはこの事。笑
できるけど。
とにかく色んな自動化は、格安でできるってこと。
弘法筆を選ばずとはこの事。笑
664デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 20:38:14.03ID:mNb42c/J0 まあ、給料上げたいなら
努力して頑張りましょう。
努力して頑張りましょう。
665デフォルトの名無しさん (ドコグロ MM4f-x+w6)
2022/01/25(火) 20:40:51.27ID:f4GoSiUSM Excel VBAでも作れるけどC#とかの方が全然楽だぞ
定期的なADの操作とかならPowerShellでいいし
VBAしか書けないというのでなければ.NETFrameworkの恩恵を受けられないVBAの出る幕はない
定期的なADの操作とかならPowerShellでいいし
VBAしか書けないというのでなければ.NETFrameworkの恩恵を受けられないVBAの出る幕はない
666デフォルトの名無しさん (ワントンキン MM3f-pR+k)
2022/01/25(火) 20:41:24.90ID:4M+ZFVtxM いつもの馬鹿か?
667デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
2022/01/25(火) 20:44:12.39ID:EmlIIuq10 ID:mNb42c/J0
いつもの知ったかの馬鹿?
いつもの知ったかの馬鹿?
668デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 20:46:43.85ID:mNb42c/J0 コスパの話をしてんのよ。
わかるかな?無能さん。
わかるかな?無能さん。
669デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
2022/01/25(火) 20:58:23.53ID:EmlIIuq10670デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 21:01:31.55ID:mNb42c/J0 もちろん、PowerShellでも作れるし
他にもテキストベースなら
JavaScript、VBSでもつくれるし。
他にもテキストベースなら
JavaScript、VBSでもつくれるし。
671デフォルトの名無しさん (ワッチョイ 0768-IuBN)
2022/01/25(火) 21:01:47.49ID:7v92mOzc0 VBAスレなのになぁ
672デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 21:04:24.62ID:mNb42c/J0 無能はスマソ。
Windows環境なら、簡単に自動化する方法は
沢山あるよって話でした。
さようなら。
Windows環境なら、簡単に自動化する方法は
沢山あるよって話でした。
さようなら。
673デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
2022/01/25(火) 21:28:25.73ID:EmlIIuq10 >>672
話しを誤魔化して逃げるのかよ、馬鹿
話しを誤魔化して逃げるのかよ、馬鹿
674デフォルトの名無しさん (ドコグロ MM4f-x+w6)
2022/01/25(火) 21:31:06.39ID:Ezk4VrXqM 放置しとけよw
別に今時のWindowsならC#でもVB.NETでも使えることすら知らんみたいだし
別に今時のWindowsならC#でもVB.NETでも使えることすら知らんみたいだし
675デフォルトの名無しさん (ワッチョイ 8756-xA1r)
2022/01/25(火) 22:00:31.09ID:+A6ImuRo0 >>604
なんかもうため息というかなんというか。要は上司の「俺が理解できないから」だよね。
悪い意味での日本流。東アジア流かもしれん。
偶然の産物かもだけど、「長々とした入れ子は駄目」は賛成する。
4段以上のネストとか30行以上の関数とか俺の頭じゃバッファオーバーフロー。
なんかもうため息というかなんというか。要は上司の「俺が理解できないから」だよね。
悪い意味での日本流。東アジア流かもしれん。
偶然の産物かもだけど、「長々とした入れ子は駄目」は賛成する。
4段以上のネストとか30行以上の関数とか俺の頭じゃバッファオーバーフロー。
676デフォルトの名無しさん (ワッチョイ 8756-xA1r)
2022/01/25(火) 22:08:37.63ID:+A6ImuRo0 If( 正当条件1 ) Then
If( 正当条件2 ) Then
If( 正当条件3 ) Then
If( 正当条件4 ) Then
長〜い正当処理1
長〜い正当処理2
長〜い正当処理3
Else
エラー4
Else
エラー3
Else
エラー2
Else
エラー1
End If
こんなの見ると、「初手でエラー全部弾けよ」と思う。
If( 正当条件2 ) Then
If( 正当条件3 ) Then
If( 正当条件4 ) Then
長〜い正当処理1
長〜い正当処理2
長〜い正当処理3
Else
エラー4
Else
エラー3
Else
エラー2
Else
エラー1
End If
こんなの見ると、「初手でエラー全部弾けよ」と思う。
677デフォルトの名無しさん (ワッチョイ 7fe6-BmHk)
2022/01/25(火) 22:11:24.49ID:Zmf/5OMz0 まあまあ、自分が昔組んだコード見ると何でこんな面倒なことやってたんだろうってみんなが通る道だし
678デフォルトの名無しさん (ワッチョイ a768-IuBN)
2022/01/25(火) 22:16:18.25ID:bToP/k2z0679デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/25(火) 22:21:46.97ID:mNb42c/J0 いま、Youtubeひろゆきライブ配信やってるから
よく聴いて、社畜奴隷の洗脳を解きなさいな。
よく聴いて、社畜奴隷の洗脳を解きなさいな。
680デフォルトの名無しさん (ワッチョイ 5fda-oAy5)
2022/01/25(火) 22:23:22.62ID:CplOG10X0 Office田中先生、近々ようつべに復帰するみたいですね。
内容は当たり外れあるからアレだけど、あの方の喋りはひょうきんで楽しい。
内容は当たり外れあるからアレだけど、あの方の喋りはひょうきんで楽しい。
681デフォルトの名無しさん (ワッチョイ 5fda-oAy5)
2022/01/25(火) 22:24:31.01ID:CplOG10X0682デフォルトの名無しさん (ドコグロ MM4f-x+w6)
2022/01/25(火) 22:32:38.66ID:T9L9nj8SM >>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で途中脱出させると思う
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で途中脱出させると思う
683デフォルトの名無しさん (ワッチョイ 5f7c-4V6Q)
2022/01/25(火) 23:09:39.57ID:ZGZoh/tR0 Select Case 0
Case 正当条件1
エラー1
Case 正当条件2
エラー2
Case 正当条件3
エラー3
Case 正当条件4
エラー4
Case Else
長〜い正当処理1
長〜い正当処理2
長〜い正当処理3
End Select
どやさ
Case 正当条件1
エラー1
Case 正当条件2
エラー2
Case 正当条件3
エラー3
Case 正当条件4
エラー4
Case Else
長〜い正当処理1
長〜い正当処理2
長〜い正当処理3
End Select
どやさ
684デフォルトの名無しさん (ワッチョイ 7fda-4V6Q)
2022/01/25(火) 23:20:00.64ID:Y5KLOHGW0 Call 長い正当処理1to3
685デフォルトの名無しさん (ワッチョイ e7ce-IuBN)
2022/01/25(火) 23:22:36.33ID:DW1OPm0+0 >>676
VBAはショートサーキットしないからIfを何段も並べた方が効率いい場合がある
けど、この場合はエラーも4種類だから判定式を1つにまとめるわけにいかない
この書き方が読みにくいと思うならIfからエラーまでをそれぞれ4つのFunctionに飛ばすかな
VBAはショートサーキットしないからIfを何段も並べた方が効率いい場合がある
けど、この場合はエラーも4種類だから判定式を1つにまとめるわけにいかない
この書き方が読みにくいと思うならIfからエラーまでをそれぞれ4つのFunctionに飛ばすかな
686デフォルトの名無しさん (スフッ Sd7f-N4O5)
2022/01/25(火) 23:29:04.02ID:UWkwB/rRd 頭が悪いからずっとこれだわ
If エラー条件1 Then
エラー処理
Exit Sub
End if
If エラー条件2 Then
エラー処理
Exit Sub
End if
If エラー条件3 Then
エラー処理
Exit Sub
End if
正当処理
If エラー条件1 Then
エラー処理
Exit Sub
End if
If エラー条件2 Then
エラー処理
Exit Sub
End if
If エラー条件3 Then
エラー処理
Exit Sub
End if
正当処理
687デフォルトの名無しさん (ワッチョイ 7f8e-4Ql0)
2022/01/26(水) 01:52:17.01ID:ULWJ4UsX0 >>679
馬鹿が底の浅い知識をひけらかして嘘を書いて、捨てゼリフ吐いて逃げたのにノコノコ戻ってきて再び捨てゼリフと
馬鹿は自分の拙さを知らずに馬鹿な自分が見えるだけの世界が全てだと思っているから馬鹿なんだよ
馬鹿が底の浅い知識をひけらかして嘘を書いて、捨てゼリフ吐いて逃げたのにノコノコ戻ってきて再び捨てゼリフと
馬鹿は自分の拙さを知らずに馬鹿な自分が見えるだけの世界が全てだと思っているから馬鹿なんだよ
688デフォルトの名無しさん (ドコグロ MM4f-x+w6)
2022/01/26(水) 06:27:00.95ID:0epn3Uk/M >>686
サブルーチンに切り出せるならそれが一番見易い
サブルーチンに切り出せるならそれが一番見易い
689デフォルトの名無しさん (ワッチョイ 5fda-oAy5)
2022/01/26(水) 11:26:17.93ID:RGV8ouxS0 パッと思い付いてすぐコードを書ける自体有能だと思いますよ。
みんな凄い。
みんな凄い。
690デフォルトの名無しさん (オッペケ Sr7b-zlty)
2022/01/26(水) 11:54:57.36ID:xGOCvJmUr たしかにVBとか普段書かないからif thenおかendなんて思い出せないよな
691デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/26(水) 13:10:14.89ID:q0HuFlPw0 ちゃんと単体結合テストやるところの場合だと
処理毎に、Function に分けるのが吉。
処理毎に、Function に分けるのが吉。
692デフォルトの名無しさん (ワントンキン MM3f-iT+O)
2022/01/26(水) 14:42:22.30ID:ip0aOcF2M みんな試行錯誤してきたのがよくわかる
693デフォルトの名無しさん (ワッチョイ 5fda-oAy5)
2022/01/26(水) 16:16:07.18ID:RGV8ouxS0 Excel全般て本当に努力しないと使えないってのはウソじゃないですな
694デフォルトの名無しさん (オッペケ Sr7b-8IZx)
2022/01/26(水) 16:21:39.28ID:ykAsNY55r Excel VBAビギナーの頃
5000万の案件をやり遂げた事あるけど
VBの入り口としては良いよね。
昔はVBAを入り口に、VB6.0 に移行できたから
良かったんだがな。
5000万の案件をやり遂げた事あるけど
VBの入り口としては良いよね。
昔はVBAを入り口に、VB6.0 に移行できたから
良かったんだがな。
695デフォルトの名無しさん (ワッチョイ 5f4f-NNUQ)
2022/01/26(水) 18:39:36.99ID:WAP1y4aa0 >>623
まぁ他言語をやってない奴の意見なんてそんなもんだろな。
VBAで使えるものもあれば使えないものもある。
テンプレートメソッドパターンなんかは使えないけどストラテジーパターンなんかは使える。
そういうの使った際に分岐が減るからUT楽になるかなー、とか、それ使う程の規模かなー、とか
楽な方を選べるってことだよ。
まぁ他言語をやってない奴の意見なんてそんなもんだろな。
VBAで使えるものもあれば使えないものもある。
テンプレートメソッドパターンなんかは使えないけどストラテジーパターンなんかは使える。
そういうの使った際に分岐が減るからUT楽になるかなー、とか、それ使う程の規模かなー、とか
楽な方を選べるってことだよ。
696デフォルトの名無しさん (ドコグロ MM4f-x+w6)
2022/01/26(水) 18:53:39.06ID:YVr9NW6iM697デフォルトの名無しさん (ラクッペペ MM8f-DS0X)
2022/01/26(水) 19:15:39.62ID:xR2ItXtPM グローバルしかない古代BASICに比べれば天国じゃよ
698676 (ワッチョイ 8756-xA1r)
2022/01/26(水) 20:11:08.97ID:+JbM4Kut0 みんなやっぱ困ってるお題なんだなこれ。反応ありがとう。
俺は
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 て書けるのかな。
俺は
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 て書けるのかな。
699デフォルトの名無しさん (ワッチョイ a768-IuBN)
2022/01/26(水) 20:33:27.76ID:Rwt/NS3J0 エラーとしてまとめるってのを昔見たことあるけど、見づらいかなぁ
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
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
700デフォルトの名無しさん (ドコグロ MM4f-x+w6)
2022/01/26(水) 20:50:31.29ID:8zLJqphFM >>698
> C風に
> If ( (Func = TestArguments(Args))<>Normal ) Then て書けるのかな。
書けるけど君の思ったようには動かない、例えば
Work = (Func = TestArguments(Args))
は TestArguments() の戻り値が Func と同じなら True、違うなら False が Work に入るから、それと Normal を比較することになる
※ 実際には Func は再帰呼出しとなるが引数が指定されてないのでエラーになる
> C風に
> If ( (Func = TestArguments(Args))<>Normal ) Then て書けるのかな。
書けるけど君の思ったようには動かない、例えば
Work = (Func = TestArguments(Args))
は TestArguments() の戻り値が Func と同じなら True、違うなら False が Work に入るから、それと Normal を比較することになる
※ 実際には Func は再帰呼出しとなるが引数が指定されてないのでエラーになる
701デフォルトの名無しさん (ワッチョイ 8756-xA1r)
2022/01/26(水) 21:48:41.76ID:+JbM4Kut0 >>700
なる。ありがとう。
なる。ありがとう。
702デフォルトの名無しさん (ワッチョイ 47b0-4RXt)
2022/01/27(木) 01:44:43.12ID:f6ffcYr70703デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/27(木) 02:13:33.38ID:iz7yjT+P0 後藤使うのは素人
704デフォルトの名無しさん (ドコグロ MM4f-x+w6)
2022/01/27(木) 07:25:42.82ID:EosWc+uxM >>702
Raise ならエラー情報(番号とメッセージ)を伝えられると言うメリットがあるな
Raise ならエラー情報(番号とメッセージ)を伝えられると言うメリットがあるな
705デフォルトの名無しさん (ワッチョイ a768-IuBN)
2022/01/27(木) 09:17:43.26ID:ISwrtggt0706デフォルトの名無しさん (ワッチョイ 5f4f-NNUQ)
2022/01/27(木) 09:49:42.96ID:jZ2PQbyQ0 >>696
何故そう思う?
何故そう思う?
707デフォルトの名無しさん (ドコグロ MM4f-x+w6)
2022/01/27(木) 10:10:14.97ID:pNJphUuoM >>706
CallByName() とかを使ってやってやれなくは無いけど無理矢理感あるしな
Strategyパターンはアルゴリズムを記述するサブルーチンへの参照をデータ構造の内部に保持する。
このパターンの実現には、関数ポインタや関数オブジェクト、デリゲートのほか、オーソドックスなオブジェクト指向言語におけるポリモーフィズムと委譲、あるいはリフレクションによる動的ダック・タイピングなどが利用される。
VBAにもまともな関数ポインタがあればね…
CallByName() とかを使ってやってやれなくは無いけど無理矢理感あるしな
Strategyパターンはアルゴリズムを記述するサブルーチンへの参照をデータ構造の内部に保持する。
このパターンの実現には、関数ポインタや関数オブジェクト、デリゲートのほか、オーソドックスなオブジェクト指向言語におけるポリモーフィズムと委譲、あるいはリフレクションによる動的ダック・タイピングなどが利用される。
VBAにもまともな関数ポインタがあればね…
708デフォルトの名無しさん (ワッチョイ 5f4f-NNUQ)
2022/01/27(木) 10:41:53.58ID:jZ2PQbyQ0709デフォルトの名無しさん (ドコグロ MM4f-x+w6)
2022/01/27(木) 11:20:16.68ID:NmFY0FMsM >>708
ああ、インターフェースはあるから移譲はできるか
ああ、インターフェースはあるから移譲はできるか
710デフォルトの名無しさん (ワッチョイ 275f-8IZx)
2022/01/27(木) 12:29:10.84ID:iz7yjT+P0 シンプル・イズ・ベスト。
スティーブ・ジョブズの信条でもあった。
凡才は複雑を好み、天才はシンプルを好む。
スティーブ・ジョブズの信条でもあった。
凡才は複雑を好み、天才はシンプルを好む。
711デフォルトの名無しさん (ワッチョイ e7da-lWUc)
2022/01/28(金) 00:04:37.97ID:sv+QVprG0 WorkSheetのEventで、
テーブルのフィルタソート機能(昇順or降順)をユーザが使ったときのEvent
ってできるんでしょうか?
最悪、"フィルタ機能を使った"時点でも取得できれば。。。
テーブルのフィルタソート機能(昇順or降順)をユーザが使ったときのEvent
ってできるんでしょうか?
最悪、"フィルタ機能を使った"時点でも取得できれば。。。
712デフォルトの名無しさん (ワッチョイ e7ce-IuBN)
2022/01/28(金) 00:19:09.31ID:6Z68BDtw0 >>711
ない
ない
713デフォルトの名無しさん (ワッチョイ e7da-Yr+x)
2022/01/28(金) 03:12:47.26ID:sv+QVprG0 >>712
まじですか、、、ありがとうございました。
まじですか、、、ありがとうございました。
714デフォルトの名無しさん (ワッチョイ 7d01-+o4x)
2022/01/28(金) 12:32:58.97ID:EweXC9jR0 すんません、膨大なデータ量の集計を任されて困ってます。
例えばA1セルに
「1.5G」とあるものは
Gを取った上で1024を3乗し、B1に表示
「256M」とあるものは
Mを取った上で1024を2乗し、B1に表示
「504K」とあるものは
Kを取った上で1024を掛け、B1に表示
みたいな便利なことができる関数があれば教えて頂きたく。
SUBSTITUTEで文字を取ったりVALUEで数字だけ抜き出したりしてみても、そこに条件判定を組み込むことが出来なくて…。
例えばA1セルに
「1.5G」とあるものは
Gを取った上で1024を3乗し、B1に表示
「256M」とあるものは
Mを取った上で1024を2乗し、B1に表示
「504K」とあるものは
Kを取った上で1024を掛け、B1に表示
みたいな便利なことができる関数があれば教えて頂きたく。
SUBSTITUTEで文字を取ったりVALUEで数字だけ抜き出したりしてみても、そこに条件判定を組み込むことが出来なくて…。
715デフォルトの名無しさん (ワッチョイ f1ce-Xc5L)
2022/01/28(金) 13:00:06.93ID:6Z68BDtw0 >>714
Excelのバージョン書いて
Excelのバージョン書いて
716デフォルトの名無しさん (ブーイモ MM81-Xc5L)
2022/01/28(金) 13:09:05.83ID:tnq08GUKM >>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)))
あんまりスッキリした方法じゃないけど、単位ごとに処理を分けて並べるぐらいしかないのでは
式はもうちょっと整理できると思うけど、とりあえず動くやつ
=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)))
717デフォルトの名無しさん (ワッチョイ 7d01-+o4x)
2022/01/28(金) 13:43:11.42ID:EweXC9jR0718デフォルトの名無しさん (ワッチョイ ad68-Xc5L)
2022/01/28(金) 13:54:48.79ID:SUVzbVrJ0 powerとfindで考えてたけど、あんまり変わらんかった
719デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 14:06:54.61ID:54qKpcGwM >>717
365 なら
=SWITCH(RIGHT(A1, 1), "G", 1024^3, "M", 1024^2, "K", 1024) * LEFT(A1, LEN(A1) - 1)
ただし、最後が GMK でなかった時はエラーになるのでその場合はIFERROR()で回避かな
365 なら
=SWITCH(RIGHT(A1, 1), "G", 1024^3, "M", 1024^2, "K", 1024) * LEFT(A1, LEN(A1) - 1)
ただし、最後が GMK でなかった時はエラーになるのでその場合はIFERROR()で回避かな
720デフォルトの名無しさん (ワッチョイ a563-ntHq)
2022/01/28(金) 14:10:37.46ID:pNi2eyZM0 集計なら式使わずに素直にVBAで処理すれば?
721デフォルトの名無しさん (ワッチョイ 7d01-+o4x)
2022/01/28(金) 15:01:21.24ID:EweXC9jR0 >>719
ありがとう、それも問題なくいけました。
ありがとう、それも問題なくいけました。
722デフォルトの名無しさん (ワッチョイ f1ce-Xc5L)
2022/01/28(金) 15:16:30.86ID:6Z68BDtw0 >>721
1K未満の単位の付かない数値に対応したやつ
=LET(u,RIGHT(A1,1),p,SEARCH(u,"kmg"),IFERROR(LEFT(A1,LEN(A1)-1)*1024^p,A1))
1K未満の単位の付かない数値に対応したやつ
=LET(u,RIGHT(A1,1),p,SEARCH(u,"kmg"),IFERROR(LEFT(A1,LEN(A1)-1)*1024^p,A1))
723デフォルトの名無しさん (ワッチョイ 7d01-+o4x)
2022/01/28(金) 15:34:49.10ID:EweXC9jR0 色々ありがとう。使わせていただきます。
724デフォルトの名無しさん (ワッチョイ ea4f-stl2)
2022/01/28(金) 16:00:55.15ID:Pw9WEPs80 >>723
スピードを求めるならVBAでやった方がいい。
基本、VBAよりCELLに入れた数式の方が計算早いけど、
値を設定するたび再計算が走るのでは当然遅くなる。
単位をRightの1文字切り取って使うかInStrRevで1文字切り取って使うかは自由だし、
数値部分も最後のひと文字を抜いて数値変換する方法はどうにでもなるはずだから、
後は切り取った単位で冪乗計算の乗数を変えてあげれば簡単に行けるはず。
スピードを求めるならVBAでやった方がいい。
基本、VBAよりCELLに入れた数式の方が計算早いけど、
値を設定するたび再計算が走るのでは当然遅くなる。
単位をRightの1文字切り取って使うかInStrRevで1文字切り取って使うかは自由だし、
数値部分も最後のひと文字を抜いて数値変換する方法はどうにでもなるはずだから、
後は切り取った単位で冪乗計算の乗数を変えてあげれば簡単に行けるはず。
725デフォルトの名無しさん (ワッチョイ a95f-4IfY)
2022/01/28(金) 16:07:42.05ID:eEIZm5jJ0 膨大な行数になるようなら
関数よりマクロの方が断然軽い。
マクロの記録で瞬間でできるし。
関数よりマクロの方が断然軽い。
マクロの記録で瞬間でできるし。
726デフォルトの名無しさん (ワッチョイ a95f-4IfY)
2022/01/28(金) 16:08:26.59ID:eEIZm5jJ0 記述すら必要なし。
727デフォルトの名無しさん (スプッッ Sd12-Xc5L)
2022/01/28(金) 17:30:28.61ID:vX0FG/YWd マクロの記録で瞬間て、どうやるの?
728デフォルトの名無しさん (ワッチョイ f1a6-bU36)
2022/01/28(金) 17:31:33.84ID:MK2zcruJ0 一瞬で
729デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 17:35:47.36ID:sJpZ8snBM この程度なら関数の方が速いと思うぞ
マルチスレッドで動くし
再計算も変化したセルに関連するところしかやらないから問題にはならないと思う
マルチスレッドで動くし
再計算も変化したセルに関連するところしかやらないから問題にはならないと思う
730デフォルトの名無しさん (スップ Sdea-dw97)
2022/01/28(金) 17:36:25.47ID:u6dzd5iJd ここはVBAスレだから質問はスレチだけどみんな優しいね
731デフォルトの名無しさん (ワッチョイ 66da-Xc5L)
2022/01/28(金) 17:49:38.97ID:qJef3P+M0732デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 17:57:01.02ID:sJpZ8snBM > ここはVBAスレだから(計算式の)質問はスレチだけどみんな優しいね
733デフォルトの名無しさん (ワッチョイ 668e-ltXr)
2022/01/28(金) 18:14:34.37ID:ZcQb+fCA0 >>714
こんな奴に作業を任せるとかそもそも間違えている
こんな奴に作業を任せるとかそもそも間違えている
734デフォルトの名無しさん (ワッチョイ 792f-Cnlt)
2022/01/28(金) 18:21:53.88ID:np+yf06a0 今のエクセルの計算式は基本マルチスレッドでやるから、VBAでちまちまやるよりは早いだろうけど
このスレ的にはVBAで関数作るんが正解じゃないかと思った
で、ふと思ったが、VBAの関数をワークシートの計算式で使ったら、シングルスレッドで処理されるのかな
このスレ的にはVBAで関数作るんが正解じゃないかと思った
で、ふと思ったが、VBAの関数をワークシートの計算式で使ったら、シングルスレッドで処理されるのかな
735デフォルトの名無しさん (ワッチョイ a5d0-26/q)
2022/01/28(金) 18:58:00.84ID:Qmj8/oz70 >>711
どうしても「そのテーブルのフィルタソート機能を使用した」時点を起点に処理を始めなければならないとすれば、
Worksheet_SelectionChangeで、その特定のテーブルの特定の列を走査して昇順または降順にデータが並んでいれば「フィルタソート機能を使った」と判定する、ぐらいしか思いつかない
たまたまソートする前にデータが整列してしまっていた場合や処理が完了した後に再度処理が走ってしまうので、どこかにフラグを作って管理する必要もあると思うけど
あと、ソートする列に数値と文字列やブール値などが混在している場合も判定に注意が必要かと思う
どうしても「そのテーブルのフィルタソート機能を使用した」時点を起点に処理を始めなければならないとすれば、
Worksheet_SelectionChangeで、その特定のテーブルの特定の列を走査して昇順または降順にデータが並んでいれば「フィルタソート機能を使った」と判定する、ぐらいしか思いつかない
たまたまソートする前にデータが整列してしまっていた場合や処理が完了した後に再度処理が走ってしまうので、どこかにフラグを作って管理する必要もあると思うけど
あと、ソートする列に数値と文字列やブール値などが混在している場合も判定に注意が必要かと思う
736デフォルトの名無しさん (ワッチョイ ad68-Xc5L)
2022/01/28(金) 19:12:04.41ID:SUVzbVrJ0737デフォルトの名無しさん (ワッチョイ 11cc-21ac)
2022/01/28(金) 19:24:01.89ID:qlKzmgV90 7時30分から30分ずつ加算した時刻をコンボボックスに入れるやり方をおしえてください
For i = 1 To 19
UserForm1.ComboBox5.AddItem Format(DateAdd("n", 30, "7:30"), "h:mm")
Next i
For i = 1 To 19
UserForm1.ComboBox5.AddItem Format(DateAdd("n", 30, "7:30"), "h:mm")
Next i
738デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 19:35:31.95ID:sJpZ8snBM >>734
> で、ふと思ったが、VBAの関数をワークシートの計算式で使ったら、シングルスレッドで処理されるのかな
ドキュメントは見たことないけどVBA部分はシングルだろうと思う
マルチで走るとグローバル変数で競合したとき困るし
> で、ふと思ったが、VBAの関数をワークシートの計算式で使ったら、シングルスレッドで処理されるのかな
ドキュメントは見たことないけどVBA部分はシングルだろうと思う
マルチで走るとグローバル変数で競合したとき困るし
739デフォルトの名無しさん (ワッチョイ 6ada-b3Fm)
2022/01/28(金) 19:40:10.55ID:GYI6WCqI0 VBA専用だけどExcel全般もOK
Excel板と仲悪い理由だけは分かった。
Excel板と仲悪い理由だけは分かった。
740デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 19:41:52.43ID:sJpZ8snBM >>737
Dim T As Date
T = TimeSerial(7, 30, 0)
For i = 1 To 19
UserForm1.ComboBox5.AddItem Format(T, "h:mm")
T = DateAdd("n", 30, T)
Next i
Dim T As Date
T = TimeSerial(7, 30, 0)
For i = 1 To 19
UserForm1.ComboBox5.AddItem Format(T, "h:mm")
T = DateAdd("n", 30, T)
Next i
741デフォルトの名無しさん (スフッ Sd0a-bU36)
2022/01/28(金) 19:55:14.07ID:PEhFKy76d power queryと変数定義関数で、VBA使わずともかなりのことができるようになったよね
ローコードツールみたいだなと思う
ローコードツールみたいだなと思う
742デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 20:01:26.98ID:XaG/+jlyM >>735
> Worksheet_SelectionChangeで、その特定のテーブルの特定の列を走査して昇順または降順にデータが並んでいれば「フィルタソート機能を使った」と判定する、ぐらいしか思いつかない
そんなことしなくてもWorkSheet.AutoFilterMode見て、WorkSheet.AutoFilter見たらいいだけ
> Worksheet_SelectionChangeで、その特定のテーブルの特定の列を走査して昇順または降順にデータが並んでいれば「フィルタソート機能を使った」と判定する、ぐらいしか思いつかない
そんなことしなくてもWorkSheet.AutoFilterMode見て、WorkSheet.AutoFilter見たらいいだけ
744デフォルトの名無しさん (ワッチョイ a5d0-26/q)
2022/01/28(金) 21:49:05.63ID:Qmj8/oz70 >>742
テーブルらしいので、WorksheetじゃなくてListObjectを見ないと判別できない
あと少なくとも自分には、AutoFilterにはフィルタソートをかけたかどうかを判別できるものが見つけられなかった
(フィルタソートしてもAutoFilter.FilterModeはFalse)
もし環境で動作が異なるのならごめんなさい
テーブルらしいので、WorksheetじゃなくてListObjectを見ないと判別できない
あと少なくとも自分には、AutoFilterにはフィルタソートをかけたかどうかを判別できるものが見つけられなかった
(フィルタソートしてもAutoFilter.FilterModeはFalse)
もし環境で動作が異なるのならごめんなさい
745デフォルトの名無しさん (ドコグロ MMae-YJKT)
2022/01/28(金) 22:21:03.74ID:0dNIFpO5M >>744
> テーブルらしいので、WorksheetじゃなくてListObjectを見ないと判別できない
ああ、そりゃすまん
> あと少なくとも自分には、AutoFilterにはフィルタソートをかけたかどうかを判別できるものが見つけられなかった
手元に環境ないから試せないけど
ListObjects(...).AutoFilter.Filters(...).On
じゃねーの?
> テーブルらしいので、WorksheetじゃなくてListObjectを見ないと判別できない
ああ、そりゃすまん
> あと少なくとも自分には、AutoFilterにはフィルタソートをかけたかどうかを判別できるものが見つけられなかった
手元に環境ないから試せないけど
ListObjects(...).AutoFilter.Filters(...).On
じゃねーの?
746デフォルトの名無しさん (ワッチョイ 3a3d-viSv)
2022/01/29(土) 00:40:00.86ID:d67hOlZf0 図書館に「はじめてのPower Automate Desktop」ていう本があったので借りてみたんだけどよ。
VBAでは10-20行ぐらいのエクセルの処理を、40ページぐらいかけて説明してたわ。
やってることは、VBAでやるコマンドをGUI操作でやってるような感じ。
どう考えても、VBAより簡単とは思えんしむしろVBAのほうが簡単じゃねーの?
VBAでは10-20行ぐらいのエクセルの処理を、40ページぐらいかけて説明してたわ。
やってることは、VBAでやるコマンドをGUI操作でやってるような感じ。
どう考えても、VBAより簡単とは思えんしむしろVBAのほうが簡単じゃねーの?
747デフォルトの名無しさん (スッップ Sd0a-7m15)
2022/01/29(土) 02:38:30.78ID:wvbeuCX/d >>746
馬鹿には違いがわからんだけだろ
馬鹿には違いがわからんだけだろ
748デフォルトの名無しさん (ワッチョイ 662c-Bf/t)
2022/01/29(土) 06:07:15.34ID:S/AYuT160 AWS など、Linux は逆。
GUIを排除して、コード化する。IaC(Infrastructure as Code)
AWSのGUIで設定したら、人によって間違うから、
どのボタンを押すなど、ソースコードで書いて、Terraform で実行する
これなら、Terraformのコードをサーバーへ転送して、実行するだけで環境構築できる
GUIを排除して、コード化する。IaC(Infrastructure as Code)
AWSのGUIで設定したら、人によって間違うから、
どのボタンを押すなど、ソースコードで書いて、Terraform で実行する
これなら、Terraformのコードをサーバーへ転送して、実行するだけで環境構築できる
749デフォルトの名無しさん (ワッチョイ a95f-4IfY)
2022/01/29(土) 06:12:15.60ID:nI5CwbIZ0 いや…VBA (VB6)を作った人は、相当優秀やな
昔、VB6 でフリーウェア作ったり、楽しかったわ…
昔、VB6 でフリーウェア作ったり、楽しかったわ…
750デフォルトの名無しさん (ワッチョイ 0a2e-LlB6)
2022/01/29(土) 07:43:57.70ID:p3H2eYK50 >>746
まあ、コードがわからん人(わからん人が使えるとは言ってない)向けだからな。
会社で色々ガチガチに制限されてるけど、そこだけはオッケーとかだったら使うしかないじゃない?そういう人向けだと思うよ。
Power Automateはまだサーバーが勝手に動いてくれるからマシだけど、Desktopはホント用途がわからん。
まあ、コードがわからん人(わからん人が使えるとは言ってない)向けだからな。
会社で色々ガチガチに制限されてるけど、そこだけはオッケーとかだったら使うしかないじゃない?そういう人向けだと思うよ。
Power Automateはまだサーバーが勝手に動いてくれるからマシだけど、Desktopはホント用途がわからん。
751デフォルトの名無しさん (ワッチョイ 6ada-b3Fm)
2022/01/29(土) 07:56:58.17ID:u7cBLx/b0 他言語のプログラマーからは下に見られるVBA
なぜ差別される?
なぜ差別される?
752デフォルトの名無しさん (ラクッペペ MM3e-KkJC)
2022/01/29(土) 08:31:49.58ID:vQXkhP0VM 中途半端に自分の知識を誇示して周囲を見下すやつが多いから
職場や上司を叩いて自己満足に浸るレスがこのスレでも目立つ
職場や上司を叩いて自己満足に浸るレスがこのスレでも目立つ
■ このスレッドは過去ログ倉庫に格納されています
