!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part69
https://mevius.5ch.net/test/read.cgi/tech/1607786543/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part70
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ b6da-6NWR)
2021/03/18(木) 22:08:43.71ID:jtngtgXU0754デフォルトの名無しさん (スッップ Sd8a-HO9V)
2021/05/08(土) 19:23:35.24ID:vdqKmiMMd >>750
この文章でモロバレ
この文章でモロバレ
755デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb)
2021/05/08(土) 20:01:04.28ID:+76Iryda0 With使わないのは、C#に採用されなかったように最近の流れだからまあいい
Doも、ループはWhileに統一しろってルールならまあいい
Dim使わんってどういうことだ?
まさか変数の宣言しないってことじゃないよな
Option Explicitなんて自分で書くことまずないが、真っ先に変更するオプションじゃないのか
Doも、ループはWhileに統一しろってルールならまあいい
Dim使わんってどういうことだ?
まさか変数の宣言しないってことじゃないよな
Option Explicitなんて自分で書くことまずないが、真っ先に変更するオプションじゃないのか
756デフォルトの名無しさん (ワッチョイ ca3d-ZHNQ)
2021/05/08(土) 20:07:27.25ID:cJeFkg/00 変数の宣言しないと型違いのエラーとか検知しづらくなるし、
コードの中で比較が出てきた時に自作関数の結果か変数の値かどっちと比較してるのかわかりづらくなったり…
とにかく色々エラー回避とかメンテナンス性とか考えて変数宣言しないのはナシよりのナシかと
コードの中で比較が出てきた時に自作関数の結果か変数の値かどっちと比較してるのかわかりづらくなったり…
とにかく色々エラー回避とかメンテナンス性とか考えて変数宣言しないのはナシよりのナシかと
757デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/08(土) 20:35:45.94ID:QG+os5rrH 基礎ができてなくて、型の使い分けがわからなくて全部Variantで書いてる人
758デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 21:04:16.49ID:PaQQNn710 >>755
しない
以下でエラーが起きないって時点で俺はアホらしくなって宣言をやめた
Sub foo()
Dim a As String
Dim b As Long
a = "1"
b = 2
Debug.Print a + b '3が出るぞ良かったな
End Sub
しない
以下でエラーが起きないって時点で俺はアホらしくなって宣言をやめた
Sub foo()
Dim a As String
Dim b As Long
a = "1"
b = 2
Debug.Print a + b '3が出るぞ良かったな
End Sub
759デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 21:06:38.67ID:PaQQNn710 宣言しないと何ができなくなるのか、何を間違えるのかが分からん
760デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/08(土) 21:30:00.76ID:6tENHryO0 >>758
それは暗黙の型変換が行われるから。
変数の宣言をしたほうがいいのは以下のような場合にエラーにできるから。
public sub foo()
hensu = 1
Debug.Print hansu + 1
end sub
2が出力されることを期待しているが、この場合1が出力される。(変数名の打ち間違い)
それは暗黙の型変換が行われるから。
変数の宣言をしたほうがいいのは以下のような場合にエラーにできるから。
public sub foo()
hensu = 1
Debug.Print hansu + 1
end sub
2が出力されることを期待しているが、この場合1が出力される。(変数名の打ち間違い)
761デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/08(土) 21:36:40.65ID:6tENHryO0 VB6やVBAは型が弱いので、変数名の先頭にintやlng、str等をつけてデータ型がわかるようにするのが一般的だと思ってる。
この場合だと
Dim intHensu As Integer
の宣言を入れておくべき。
この場合だと
Dim intHensu As Integer
の宣言を入れておくべき。
762デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 21:37:56.47ID:PaQQNn710763デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 21:39:48.07ID:PaQQNn710 >>761
変数名見れば何入ってるか分からないか?
変数名見れば何入ってるか分からないか?
764デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/08(土) 21:43:37.13ID:6tENHryO0 >>763
ごめん一般的といったのは、自分がそう思ってただけなので、実際はそうじゃないかも。
ごめん一般的といったのは、自分がそう思ってただけなので、実際はそうじゃないかも。
765デフォルトの名無しさん (スッップ Sd8a-6gku)
2021/05/08(土) 21:45:17.15ID:jYvDj1vcd 何でもかんでもVariant型だと余計にメモリ食ったり速度面で劣るんじゃなかったっけか
766デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/08(土) 21:52:57.44ID:QG+os5rrH 簡単なマクロならメモリも速度もほとんど気にしなくていい
そういうのが気になってきてから速くする方法を勉強してもいいと思う
そういうのが気になってきてから速くする方法を勉強してもいいと思う
767デフォルトの名無しさん (ワッチョイ ca3d-wPc9)
2021/05/08(土) 21:55:44.85ID:cJeFkg/00 文字列 String
整数 Long
小数以下も必要 Single
日付 Date
Setが必要なもの Object
なんでも Variant
初心者ならこれくらいの使い分け出来てたら十分だから宣言はして
整数 Long
小数以下も必要 Single
日付 Date
Setが必要なもの Object
なんでも Variant
初心者ならこれくらいの使い分け出来てたら十分だから宣言はして
768デフォルトの名無しさん (アウアウウー Sa1f-ymZB)
2021/05/08(土) 21:57:26.01ID:L/dDaofga 大量のデータをがばっと取るときはsql
とってきたデータをチマチマ加工したいときはVBA
二刀流がべだー
とってきたデータをチマチマ加工したいときはVBA
二刀流がべだー
769デフォルトの名無しさん (アウアウウー Sa1f-ymZB)
2021/05/08(土) 22:02:54.21ID:L/dDaofga 変数宣言でいちばん重要なのは
パブリック変数なのか
プライベート変数なのかだよ
型はそんなに気にしなくてよいから
3文字以下ならプライベート、パブリックなら5文字以上にする
パブリック変数なのか
プライベート変数なのかだよ
型はそんなに気にしなくてよいから
3文字以下ならプライベート、パブリックなら5文字以上にする
770デフォルトの名無しさん (ワッチョイ 6a4f-sv8/)
2021/05/08(土) 22:18:22.12ID:Z/jAVLJW0 >>769
いや、そもそも
外部とのやり取りはプロパティで行わないと
ブレイクポイント等仕掛けて
どこから呼ばれたか分かり辛くなることを考えると
変数をPublicで宣言する機会はまず無くなるだろう。
もちろんこのプロパティと言うのは概念的なものを含めて
Javaの様に関数と同じ様に設定することも含めるけど。
そうすればパブリック、プライベートの
判断のために変数名の考慮を行う必要も無くなる。
良かったな。
いや、そもそも
外部とのやり取りはプロパティで行わないと
ブレイクポイント等仕掛けて
どこから呼ばれたか分かり辛くなることを考えると
変数をPublicで宣言する機会はまず無くなるだろう。
もちろんこのプロパティと言うのは概念的なものを含めて
Javaの様に関数と同じ様に設定することも含めるけど。
そうすればパブリック、プライベートの
判断のために変数名の考慮を行う必要も無くなる。
良かったな。
771デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/08(土) 22:31:52.03ID:PaQQNn710772デフォルトの名無しさん (ワッチョイ 0b2f-C7Xb)
2021/05/08(土) 23:54:10.02ID:+76Iryda0773デフォルトの名無しさん (ワッチョイ 6bac-91/Y)
2021/05/09(日) 00:48:39.55ID:vQpWnC+C0774デフォルトの名無しさん (ワッチョイ 7eda-K+t/)
2021/05/09(日) 01:41:49.82ID:SiihAWPs0 variantにすると型間違いでエラーがでないので
やはり推奨できない
やはり推奨できない
775デフォルトの名無しさん (ワッチョイ 2e02-X9JK)
2021/05/09(日) 02:15:37.67ID:vzYu7ze/0 知恵を貸してください
ある可変長2次元配列のデータについて
各列のデータから1つずつ抽出した文字列の組み合わせを出力したいと考えています
例えばArray(2,2)のデータが以下だとします
Array(0,0)="いちご"
Array(0,1)="みかん"
Array(0,2)=""
Array(1,0)="あまい"
Array(1,1)="すっぱい"
Array(1,2)="にがい"
Array(2,0)="100円"
Array(2,1)="200円"
Array(2,2)=""
この場合
「いちご,あまい,100円」「いちご,あまい,200円」「みかん,すっぱい,100円」
などの
空白を除く2*3*2=12通りの組み合わせ全てを抽出したいのです
(抽出先はシートでも配列でも何でも良いです)
そして実際にはこの配列をArray(x,y)とすると
xとyは1以上の自然数で不定です
配列の行数が固定長であれば各行において行の数だけFor文でループの中にループを入れれば良いのでしょうが
配列の行数が1以上の不定数の場合にどうすれば良いか思い付きません
vbaというよりアルゴリズムの問題かも知れませんが
良い方法はあるのでしょうか
ある可変長2次元配列のデータについて
各列のデータから1つずつ抽出した文字列の組み合わせを出力したいと考えています
例えばArray(2,2)のデータが以下だとします
Array(0,0)="いちご"
Array(0,1)="みかん"
Array(0,2)=""
Array(1,0)="あまい"
Array(1,1)="すっぱい"
Array(1,2)="にがい"
Array(2,0)="100円"
Array(2,1)="200円"
Array(2,2)=""
この場合
「いちご,あまい,100円」「いちご,あまい,200円」「みかん,すっぱい,100円」
などの
空白を除く2*3*2=12通りの組み合わせ全てを抽出したいのです
(抽出先はシートでも配列でも何でも良いです)
そして実際にはこの配列をArray(x,y)とすると
xとyは1以上の自然数で不定です
配列の行数が固定長であれば各行において行の数だけFor文でループの中にループを入れれば良いのでしょうが
配列の行数が1以上の不定数の場合にどうすれば良いか思い付きません
vbaというよりアルゴリズムの問題かも知れませんが
良い方法はあるのでしょうか
776デフォルトの名無しさん (ワッチョイ be8e-gIfd)
2021/05/09(日) 02:26:22.29ID:qbmXU1K50 はい、いつものあいつ
777デフォルトの名無しさん (ワッチョイ eada-K+t/)
2021/05/09(日) 04:53:38.03ID:yBvaHslb0778デフォルトの名無しさん (ワッチョイ 9f5f-c52j)
2021/05/09(日) 06:11:50.07ID:Gu7b6Am40 相手しない相手しない
779デフォルトの名無しさん (アウアウウー Sa1f-ymZB)
2021/05/09(日) 08:20:21.39ID:nRlrfZeFa ワークシートをグローバル変数みたいなつかい方をする
うむ、よくある
うむ、よくある
780デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/09(日) 09:19:54.62ID:TBZcO69u0 uboundで現在の配列の最大要素番号調べて、そこまでループとかじゃないの?
そもそも配列なんて自分はあんまり使わない。redim preserveって確かかなり遅かった気がする。
そもそも配列なんて自分はあんまり使わない。redim preserveって確かかなり遅かった気がする。
781デフォルトの名無しさん (ブーイモ MMd6-O8Br)
2021/05/09(日) 09:44:03.47ID:1mWvM4p1M ReDim Preserveは1番ケツの次元しか可変に出来ねぇのがとても残念
782デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/09(日) 09:48:20.73ID:HdQWbOvH0 >>775
Sub foo()
Dim array1() As String
ReDim Preserve array1(3, 3)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(0, 2) = ""
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
array1(2, 2) = ""
For Each dim1 In array1
If dim1 <> "" Then
Debug.Print dim1
End If
Next
End Sub
vbaの動的配列は本当にめんどくさいな
Sub foo()
Dim array1() As String
ReDim Preserve array1(3, 3)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(0, 2) = ""
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
array1(2, 2) = ""
For Each dim1 In array1
If dim1 <> "" Then
Debug.Print dim1
End If
Next
End Sub
vbaの動的配列は本当にめんどくさいな
783デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/09(日) 10:05:56.73ID:Nzaho5/SH 行数、列数はUBound関数で調べられる
2次元配列の場合は
UBound(array1, 1)
UBound(array1, 2)
で、それぞれの次元の大きさが取得できる
2番目のパラメータが対象となる次元
あと、多次元配列に一気に代入するにはarray関数を次元と同じ数だけ入れ子にする方法がある
array1 = Array( _
Array("いちご", "みかん", ""), _
Array("あまい", "すっぱい", "にがい"), _
Array("100円", "200円", ""))
2次元配列の場合は
UBound(array1, 1)
UBound(array1, 2)
で、それぞれの次元の大きさが取得できる
2番目のパラメータが対象となる次元
あと、多次元配列に一気に代入するにはarray関数を次元と同じ数だけ入れ子にする方法がある
array1 = Array( _
Array("いちご", "みかん", ""), _
Array("あまい", "すっぱい", "にがい"), _
Array("100円", "200円", ""))
784デフォルトの名無しさん (ワッチョイ 2e02-X9JK)
2021/05/09(日) 10:13:55.83ID:vzYu7ze/0 ありがとうございます
ReDim Preserveの配列再定義は知っているのですが
例えば>>782のようだと
「いちご」
「みかん」
「あまい」
……
「200円」
のような2+3+2の7個出力されるだけですよね
「いちご,あまい,100円」
「いちご,あまい,200円」
「いちご,すっぱい,100円」
……
「みかん,にがい,200円」
のような2*3*2の12個を出力したいのです
行数が固定なら例えばArray(2,x)のように列数が不定でも
For i=0 To UBound Array(0,x)
For j=0 To UBound Array(1,x)
For k=0 To UBound Array(2,x)
Debug.Print Array(0,i)& "," & Array(1,i)& "," & Array(2,i)
Next
Next
Next
のようにして空白部分の例外処理を適当に入れれば良いのは分かりますが
行数が不定なので分からないというお話です
ReDim Preserveの配列再定義は知っているのですが
例えば>>782のようだと
「いちご」
「みかん」
「あまい」
……
「200円」
のような2+3+2の7個出力されるだけですよね
「いちご,あまい,100円」
「いちご,あまい,200円」
「いちご,すっぱい,100円」
……
「みかん,にがい,200円」
のような2*3*2の12個を出力したいのです
行数が固定なら例えばArray(2,x)のように列数が不定でも
For i=0 To UBound Array(0,x)
For j=0 To UBound Array(1,x)
For k=0 To UBound Array(2,x)
Debug.Print Array(0,i)& "," & Array(1,i)& "," & Array(2,i)
Next
Next
Next
のようにして空白部分の例外処理を適当に入れれば良いのは分かりますが
行数が不定なので分からないというお話です
785デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/09(日) 10:14:00.97ID:Nzaho5/SH >>775
2次元配列の要素数が不明の場合こういう書き方もできる
For i = 0 To UBound(array1)
For j = 0 To UBound(array1(i))
Debug.Print array1(i)(j)
Next j
Next i
2次元配列の要素数が不明の場合こういう書き方もできる
For i = 0 To UBound(array1)
For j = 0 To UBound(array1(i))
Debug.Print array1(i)(j)
Next j
Next i
786デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/09(日) 10:14:31.62ID:HdQWbOvH0 >>782は全然違うわ、スマン
787デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/09(日) 10:50:20.26ID:Nzaho5/SH788デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/09(日) 11:38:04.63ID:TBZcO69u0789デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/09(日) 11:47:23.05ID:Nzaho5/SH とりあえずもう一つ突っ込みたい
Preserveは不要だしパラメータも(3, 3)じゃない
ReDim array1(2, 2) が正解
>>788
ネストの深さが不定の時は再帰でやるのが一番自然だと思うよ
Preserveは不要だしパラメータも(3, 3)じゃない
ReDim array1(2, 2) が正解
>>788
ネストの深さが不定の時は再帰でやるのが一番自然だと思うよ
790デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/09(日) 11:59:36.87ID:TBZcO69u0 ごめんちょっと動作検証してたら、Uboundのとこxとyが逆だった。
Ifの中に書いてるのが、Ubound(ary1)
でForの中に書いてるのが
Ubound(ary1, 2)
ですね。
Ifの中に書いてるのが、Ubound(ary1)
でForの中に書いてるのが
Ubound(ary1, 2)
ですね。
791デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/09(日) 12:09:11.80ID:TBZcO69u0792デフォルトの名無しさん (JP 0H97-jjtP)
2021/05/09(日) 12:10:40.52ID:Nzaho5/SH やってることは同じだけど画像だと入力が面倒だろうし、俺もほとんど同時に作っちゃってたんで貼らして
Option Explicit
Sub foo()
Dim array1() As String
ReDim array1(2, 2)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(0, 2) = ""
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
array1(2, 2) = ""
Call recloop(array1, 0, "")
End Sub
Sub recloop(array1, row1, str)
Dim col1
If row1 < UBound(array1, 2) Then
For col1 = 0 To UBound(array1, 2)
If array1(row1, col1) <> "" Then Call recloop(array1, row1 + 1, str & array1(row1, col1) & ",")
Next
Else
For col1 = 0 To UBound(array1, 2)
If array1(row1, col1) <> "" Then Debug.Print str & array1(row1, col1)
Next
End If
End Sub
Option Explicit
Sub foo()
Dim array1() As String
ReDim array1(2, 2)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(0, 2) = ""
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
array1(2, 2) = ""
Call recloop(array1, 0, "")
End Sub
Sub recloop(array1, row1, str)
Dim col1
If row1 < UBound(array1, 2) Then
For col1 = 0 To UBound(array1, 2)
If array1(row1, col1) <> "" Then Call recloop(array1, row1 + 1, str & array1(row1, col1) & ",")
Next
Else
For col1 = 0 To UBound(array1, 2)
If array1(row1, col1) <> "" Then Debug.Print str & array1(row1, col1)
Next
End If
End Sub
793デフォルトの名無しさん (ワッチョイ 2e02-X9JK)
2021/05/09(日) 12:23:48.39ID:vzYu7ze/0 ありがとうございます
再帰関数の知識は持っていたのですが
自身で再帰関数を使用したことは無かったため盲点でした
このように使用するのですね
助かりました参考にさせて頂きます
再帰関数の知識は持っていたのですが
自身で再帰関数を使用したことは無かったため盲点でした
このように使用するのですね
助かりました参考にさせて頂きます
794デフォルトの名無しさん (ワッチョイ 6a01-wt3T)
2021/05/09(日) 13:41:59.08ID:WHUEfE6G0 >>779
グローバル変数と言うよりストレージみたいなもんだと思ってる
グローバル変数と言うよりストレージみたいなもんだと思ってる
795デフォルトの名無しさん (ブーイモ MMd6-O8Br)
2021/05/09(日) 21:06:29.88ID:o10D8BaNM ReDim使うのって要素数に変数使うときじゃなかった?
数が決まってるならDim array(0 to 2, 0 to 2) As Stringで良いんだよね?
数が決まってるならDim array(0 to 2, 0 to 2) As Stringで良いんだよね?
796デフォルトの名無しさん (ワッチョイ 2a05-M0W8)
2021/05/09(日) 21:07:35.90ID:OCR3m9+L0 >>737
あなたに禿同!
あなたに禿同!
797デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/09(日) 21:47:13.65ID:HdQWbOvH0 >795
動的配列と静的配列の違いだよ
「変数」でもなければ「数が決まってる」でもなく、「後で変更するかどうか」が違う所
動的配列と静的配列の違いだよ
「変数」でもなければ「数が決まってる」でもなく、「後で変更するかどうか」が違う所
798デフォルトの名無しさん (スプッッ Sd22-jjtP)
2021/05/10(月) 01:12:41.56ID:8FNokcfwd 再帰を使わない方法でやってみた
「r行c列」の配列を「c桁のr進数」とみなしてる。とりあえず動いたけどバグあるかも
Sub Macro5()
Dim array1() As String
ReDim array1(2, 2)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
row0 = UBound(array1, 1)
col0 = UBound(array1, 2) + 1
For n = 0 To (row0 + 1) ^ col0 - 1
nn = n
s = ""
For row1 = row0 To 0 Step -1
col1 = nn Mod (row0 + 1)
nn = nn \ (row0 + 1)
If array1(row1, col1) = "" Then
s = ""
Exit For
Else
s = array1(row1, col1) & s
If row1 Then s = "," & s
End If
Next
If s <> "" Then Debug.Print s
Next
End Sub
「r行c列」の配列を「c桁のr進数」とみなしてる。とりあえず動いたけどバグあるかも
Sub Macro5()
Dim array1() As String
ReDim array1(2, 2)
array1(0, 0) = "いちご"
array1(0, 1) = "みかん"
array1(1, 0) = "あまい"
array1(1, 1) = "すっぱい"
array1(1, 2) = "にがい"
array1(2, 0) = "100円"
array1(2, 1) = "200円"
row0 = UBound(array1, 1)
col0 = UBound(array1, 2) + 1
For n = 0 To (row0 + 1) ^ col0 - 1
nn = n
s = ""
For row1 = row0 To 0 Step -1
col1 = nn Mod (row0 + 1)
nn = nn \ (row0 + 1)
If array1(row1, col1) = "" Then
s = ""
Exit For
Else
s = array1(row1, col1) & s
If row1 Then s = "," & s
End If
Next
If s <> "" Then Debug.Print s
Next
End Sub
799デフォルトの名無しさん (アウアウエー Sae2-Qnne)
2021/05/10(月) 20:50:28.57ID:6x/72ii/a そもそもの疑問で、なぜVBAは初心者向けとか言われるのでしょうか。
こんなに小難しいチマチマしたこも書かなきゃいけないのに。
全然わからん。
こんなに小難しいチマチマしたこも書かなきゃいけないのに。
全然わからん。
800デフォルトの名無しさん (ワッチョイ d35f-d7su)
2021/05/10(月) 20:50:49.81ID:GwFlyMni0 >>761
俺もハンガリアン使ってるわ
俺もハンガリアン使ってるわ
801デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/10(月) 20:53:01.66ID:2ArSfNqX0 >>775
総当りってよく考えればパワークエリでクロス結合すれば一発だろって思ったら、パワークエリにクロス結合が無かった・・・
https://www.shegolab.jp/entry/excel-macro-cross-join
accessだとアホみたいなクエリで即完成
https://i.imgur.com/moHa3bx.png
総当りってよく考えればパワークエリでクロス結合すれば一発だろって思ったら、パワークエリにクロス結合が無かった・・・
https://www.shegolab.jp/entry/excel-macro-cross-join
accessだとアホみたいなクエリで即完成
https://i.imgur.com/moHa3bx.png
802デフォルトの名無しさん (ワンミングク MMda-rYak)
2021/05/10(月) 20:55:51.32ID:/NuMOBBIM >>799
昔はプログラミングはもっと敷居が高かったんだよ
その中では、Excelさえあれば使えてUIはExcelのワークシートをそのまま利用できるという手軽さは初心者には魅力的だった
その頃の名残だね
今ではPowerAppsとかGASとかSalesforceとかもっと簡単で強力な選択肢は色々あるし、
プログラミングの勉強ならPythonとかJavaScriptの方が初学者には敷居が低い
昔はプログラミングはもっと敷居が高かったんだよ
その中では、Excelさえあれば使えてUIはExcelのワークシートをそのまま利用できるという手軽さは初心者には魅力的だった
その頃の名残だね
今ではPowerAppsとかGASとかSalesforceとかもっと簡単で強力な選択肢は色々あるし、
プログラミングの勉強ならPythonとかJavaScriptの方が初学者には敷居が低い
803デフォルトの名無しさん (ワッチョイ 2ae6-YEtS)
2021/05/10(月) 20:57:55.19ID:vb1TGTCB0 ハンガリアンより#%&$の方が分かりやすいよな
804デフォルトの名無しさん (アウアウエー Sae2-Qnne)
2021/05/10(月) 21:06:13.53ID:6x/72ii/a805デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/10(月) 21:09:38.66ID:2ArSfNqX0 vbaは本当に楽。forとif覚えるだけで仕事がはかどりまくり
Cはメモリの知識やらヘッダやら本当に覚える事が多かった上に超便利なワークシートってもんもない
Cはメモリの知識やらヘッダやら本当に覚える事が多かった上に超便利なワークシートってもんもない
806デフォルトの名無しさん (ワッチョイ 6a63-DjaX)
2021/05/10(月) 21:10:42.65ID:aMiH/GVN0 まったくな
807デフォルトの名無しさん (ワッチョイ 2ae6-YEtS)
2021/05/10(月) 21:13:02.21ID:vb1TGTCB0 沢山の似たようなライブラリが公開されていて
いろいろな方法でやりたいことが実現できる
それはそれはいい時代になりました
でも、コレがやりたければコウ書け!
まどろっこしいが他に道は無い!
ってのも初心者にはいいものですよ
いろいろな方法でやりたいことが実現できる
それはそれはいい時代になりました
でも、コレがやりたければコウ書け!
まどろっこしいが他に道は無い!
ってのも初心者にはいいものですよ
808デフォルトの名無しさん (ワッチョイ 6aad-M0W8)
2021/05/10(月) 21:46:59.07ID:WQl4RFpm0 条件付き書式や文字の縮小機能まであって、CopyFromRecordsetの異様な速さ
(もちろんシート関数やオートフィルタの速さも異様でしょう)
VSでは無理だし、自作も当然無理
Excel部署の人だって、1人では無理でしょう
(もちろんシート関数やオートフィルタの速さも異様でしょう)
VSでは無理だし、自作も当然無理
Excel部署の人だって、1人では無理でしょう
809デフォルトの名無しさん (ワッチョイ 6aad-M0W8)
2021/05/10(月) 21:59:47.57ID:WQl4RFpm0 でも.NETに比べれば、メモリを意識するよ
参照渡しとかMidで打刻とか
結果、値渡しの.NETの方が速いけどw(初期の.NETはVBAの方が速かったが)
参照渡しとかMidで打刻とか
結果、値渡しの.NETの方が速いけどw(初期の.NETはVBAの方が速かったが)
810デフォルトの名無しさん (ワッチョイ 732c-C7Xb)
2021/05/10(月) 22:34:57.25ID:ViCp850r0 VBA は、シェルスクリプトと同じ。
ちょっとした事しかできない
それを知らない香具師が、複雑なプログラミング用途に使って、
結局保守できなくて、Ruby の10倍ぐらいのコストが掛かる
ちょっとしたナイフで、マグロをさばいたりするのと同じ。
道具・用途のミスマッチ
だから、ウェブ系の会社は、プログラミング言語は適材適所で選択しますって言う。
道具・用途を合わせる。
言語を固定化しない
頭が柔軟。
先に道具を選択しない。
用途から道具を選ぶ
実社会では、ほとんどこればっかり
ちょっとした事しかできない
それを知らない香具師が、複雑なプログラミング用途に使って、
結局保守できなくて、Ruby の10倍ぐらいのコストが掛かる
ちょっとしたナイフで、マグロをさばいたりするのと同じ。
道具・用途のミスマッチ
だから、ウェブ系の会社は、プログラミング言語は適材適所で選択しますって言う。
道具・用途を合わせる。
言語を固定化しない
頭が柔軟。
先に道具を選択しない。
用途から道具を選ぶ
実社会では、ほとんどこればっかり
811デフォルトの名無しさん (ワッチョイ 8f63-/N+h)
2021/05/10(月) 23:04:34.19ID:E9+bgpxg0 ExcelのAPIが優秀なのであってVBA自体は微塵も良くない
812デフォルトの名無しさん (ワッチョイ be8e-gIfd)
2021/05/10(月) 23:09:51.84ID:W7s1RH430813デフォルトの名無しさん (ワッチョイ 6aad-M0W8)
2021/05/11(火) 00:42:36.92ID:OkNnulfr0 先に道具を選択しないと言いながら、道具ありきの叩きw
オープン系は外から機能を持って来るのが特徴なので、言語自体の機能は不要
なんでも呼べるシンプルなシェルのようなもの、オープン系の起点としてふさわしい
大量データの組合せならSQL ServerにBULK INSERTしてCROSS JOINするのが最速のはず
でもそのクエリを投げるのはVBAで十分で、結果の表示はExcelのCopyFromRecordsetが最速のはず
オープン系は外から機能を持って来るのが特徴なので、言語自体の機能は不要
なんでも呼べるシンプルなシェルのようなもの、オープン系の起点としてふさわしい
大量データの組合せならSQL ServerにBULK INSERTしてCROSS JOINするのが最速のはず
でもそのクエリを投げるのはVBAで十分で、結果の表示はExcelのCopyFromRecordsetが最速のはず
814デフォルトの名無しさん (ワッチョイ beb0-V+d8)
2021/05/11(火) 01:44:32.13ID:hzo0csgz0815デフォルトの名無しさん (ワッチョイ 6a01-wt3T)
2021/05/11(火) 05:27:49.58ID:/SA0DWk40 >>814
クエリってAccess VBAで動的に生成できるんだぜ
クエリってAccess VBAで動的に生成できるんだぜ
816デフォルトの名無しさん (スッップ Sd8a-V+d8)
2021/05/11(火) 07:53:09.78ID:FeyzCVkSd >>815
そんなん知ってるが、結局VBAかよw
そんなん知ってるが、結局VBAかよw
817デフォルトの名無しさん (ワッチョイ 6a01-wt3T)
2021/05/11(火) 09:04:47.57ID:/SA0DWk40818デフォルトの名無しさん (ワッチョイ 6aad-C7Xb)
2021/05/11(火) 11:31:41.06ID:OkNnulfr0 無償のSQL Serverがあるのに、わざわざ有償で低性能のAccessを使う理由は、初級者であること以外にないですよ
でもExcelはいろんな点で他では追い付けない性能があるので、初級者でなくても使う理由がある
AccessのグリッドもVS等の普通のグリッドとは違い、非同期のリピーターコントロールでできていて、
大量件数でも先頭から順次描画し、全行をメモリに持たないため、高速になるとのこと
その点では、VSより性能がいい(あと子要素の帳票フォームの簡潔さ)
そのかわり常に大量のイベントが走るため、不安定になりやすい
(DBとしてはなんちゃってなので、業者はADP等でSQL Serverと連携して使う)
その速度をさらに超えるのがExcel(特定の使い方で)
イベントが少ないので、不安定になりにくい(Delphiもその点が良かった)
イベントはブック単位で代表できるため、ソースも統合管理しやすい
でもExcelはいろんな点で他では追い付けない性能があるので、初級者でなくても使う理由がある
AccessのグリッドもVS等の普通のグリッドとは違い、非同期のリピーターコントロールでできていて、
大量件数でも先頭から順次描画し、全行をメモリに持たないため、高速になるとのこと
その点では、VSより性能がいい(あと子要素の帳票フォームの簡潔さ)
そのかわり常に大量のイベントが走るため、不安定になりやすい
(DBとしてはなんちゃってなので、業者はADP等でSQL Serverと連携して使う)
その速度をさらに超えるのがExcel(特定の使い方で)
イベントが少ないので、不安定になりにくい(Delphiもその点が良かった)
イベントはブック単位で代表できるため、ソースも統合管理しやすい
819デフォルトの名無しさん (アウアウウー Sa1f-ZHNQ)
2021/05/11(火) 11:39:24.42ID:UIB0JMdPa ユーザーフォームのマルチページ、タブ自体のBackColorプロパティってありますか?
なければ代替手段を教えてください
なければ代替手段を教えてください
820デフォルトの名無しさん (ラクッペペ MMe6-YEtS)
2021/05/11(火) 14:43:21.70ID:0OaQcACpM Excelフォームが中途半端な出来損ないだから
ここを最新のユーザーエクスペリエンス()で作り直せばAccessなんかすぐに駆逐できる
ここを最新のユーザーエクスペリエンス()で作り直せばAccessなんかすぐに駆逐できる
821デフォルトの名無しさん (アウアウウー Sa1f-ymZB)
2021/05/11(火) 18:04:28.65ID:ZT0Qqj13a そうだね
大規模なのはSQL
小回りをきかせたいときはエクセル
事務屋ならこれで8割できてしまうだろうね
大規模なのはSQL
小回りをきかせたいときはエクセル
事務屋ならこれで8割できてしまうだろうね
822デフォルトの名無しさん (ラクッペペ MMe6-YEtS)
2021/05/11(火) 19:06:43.69ID:YSh4nGIkM ただ、VBAはヤメテ
823デフォルトの名無しさん (アウアウウー Sa1f-nFSz)
2021/05/12(水) 12:57:12.16ID:mV8qcvY8a フォームがもう少し何とかなればとは思うよ
>>819然り、痒いところまであとちょっとって感じることがしばしば
>>819然り、痒いところまであとちょっとって感じることがしばしば
824デフォルトの名無しさん (ワッチョイ 6a4f-sv8/)
2021/05/12(水) 15:18:28.53ID:BdPBmasF0825デフォルトの名無しさん (ワッチョイ eada-K+t/)
2021/05/12(水) 15:47:57.27ID:MQbyKY6x0 なんだ?喧嘩勃発か?
826デフォルトの名無しさん (オイコラミネオ MMb6-xc0m)
2021/05/12(水) 15:55:47.07ID:bNkKHmITM ちょこちょこ書く分には十分なものだと思うよ
827デフォルトの名無しさん (アウアウウー Sa1f-K+t/)
2021/05/13(木) 12:11:34.16ID:RAFicIoxa そうかな
828デフォルトの名無しさん (アウアウウー Sa1f-ymZB)
2021/05/13(木) 16:10:32.92ID:yc7BZe0Ia ビジネスやってる人じゃないとわからないと思うよ
829デフォルトの名無しさん (ワッチョイ eada-K+t/)
2021/05/13(木) 17:14:21.80ID:4K+rsr0c0 確かに。趣味レベルの自分じゃ縁のない話すぎるわ
830デフォルトの名無しさん (ワッチョイ 2301-UHqe)
2021/05/13(木) 20:39:49.87ID:BPKFCkYp0 なんのビジネスだよ・・・
831デフォルトの名無しさん (スッップ Sd8a-XxK1)
2021/05/13(木) 20:43:26.98ID:nlP9UXqMd 普通の仕事で書くコードってことじゃないの
832デフォルトの名無しさん (アウアウウー Sa1f-ZHNQ)
2021/05/13(木) 20:48:35.69ID:a3vkA3q7a ビジネスってよりワークで使うかな
ワークマンってよりはビジネスマンか…
ワークマンってよりはビジネスマンか…
833デフォルトの名無しさん (アウアウウー Sa1f-ZHNQ)
2021/05/13(木) 20:50:41.60ID:a3vkA3q7a 使いどころはビジネスってよりワークかな
でもワークマンってよりはビジネスマンか…
でもワークマンってよりはビジネスマンか…
834デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/13(木) 21:12:55.35ID:HJ1eRgpP0 ワークってよりビジネスな場合もあるかな
でもワークマンってよりはビジネスマンか…
でもワークマンってよりはビジネスマンか…
835デフォルトの名無しさん (ワッチョイ 2301-UHqe)
2021/05/13(木) 21:19:10.07ID:BPKFCkYp0 なんでvbs採用したんだろう
jscriptならもっと未来あっただろうに
tsへの移行も自然だっと思う
jscriptならもっと未来あっただろうに
tsへの移行も自然だっと思う
836デフォルトの名無しさん (ワッチョイ 8f68-fceI)
2021/05/13(木) 21:27:44.43ID:HJ1eRgpP0 >>835
そらもうvbaの登場時期が早かったからとしか言いようがない
vba開発チームが頑張ったんだろう
30年ぐらい前はBかCが当たり前で、インターネットもロクにないのに謎のjscriptなんて言語が勝つのは無理がある
そらもうvbaの登場時期が早かったからとしか言いようがない
vba開発チームが頑張ったんだろう
30年ぐらい前はBかCが当たり前で、インターネットもロクにないのに謎のjscriptなんて言語が勝つのは無理がある
837デフォルトの名無しさん (スッップ Sd2f-2uji)
2021/05/14(金) 08:17:06.17ID:NU+NRHZVd838デフォルトの名無しさん (スッップ Sd2f-2uji)
2021/05/14(金) 08:20:10.01ID:NU+NRHZVd839デフォルトの名無しさん (アウアウウー Sa31-p5Ne)
2021/05/14(金) 08:39:26.02ID:q7wj393Za タブを切り替えた瞬間にバックカラーも切り替えれば良いだけ
840デフォルトの名無しさん (アウアウウー Saaf-/TFo)
2021/05/14(金) 09:49:10.63ID:rbrSxZ/Wa 勝手に見出しの色のことだと思ってた
エクセルのシートにやるみたいなやつ
エクセルのシートにやるみたいなやつ
841681 (アウアウウー Sa2d-X/m6)
2021/05/14(金) 10:40:26.20ID:f8pG7pdca 681です
皆さんのおかげで無事目的のコードが作れました
あと1つ質問なのですが…
画像のように重複した数値を除く総計を算出したいと思っています
会社名毎の数値を合計すればいいだけだと思ったのですが、
どうしても重複のものも一緒に合算してしまいお手上げ状態です
因みに元データは都合によりいじれないため、合算前に重複部分を削除等はできません
恐れ入りますが、宜しくお願いします
皆さんのおかげで無事目的のコードが作れました
あと1つ質問なのですが…
画像のように重複した数値を除く総計を算出したいと思っています
会社名毎の数値を合計すればいいだけだと思ったのですが、
どうしても重複のものも一緒に合算してしまいお手上げ状態です
因みに元データは都合によりいじれないため、合算前に重複部分を削除等はできません
恐れ入りますが、宜しくお願いします
842681 (アウアウウー Sa2d-X/m6)
2021/05/14(金) 10:41:19.08ID:f8pG7pdca 画像を貼り忘れておりました
https://i.imgur.com/HLZYwhr.png
https://i.imgur.com/HLZYwhr.png
843デフォルトの名無しさん (ワッチョイ 7b42-AYRO)
2021/05/14(金) 11:33:58.88ID:+U8xhPuO0 会社ごとの重複を除く合計が出たんだからそれを足すだけだろ
逆に何をやったらまた重複したものも合算するのか理解できない
逆に何をやったらまた重複したものも合算するのか理解できない
844デフォルトの名無しさん (ワッチョイ 538e-dhLD)
2021/05/14(金) 11:38:54.22ID:usYNgZ690 いつものあいつだぞ
845デフォルトの名無しさん (アウアウウー Sa9f-drH/)
2021/05/14(金) 12:11:07.63ID:mu0LH/UJa >>841
もとデータをいじらないでも、もとデータを別のシートにコピーすればいじれるんじゃね
もとデータをいじらないでも、もとデータを別のシートにコピーすればいじれるんじゃね
846デフォルトの名無しさん (ワッチョイ 7fb0-+Dcr)
2021/05/14(金) 12:24:14.75ID:Vktv5FHm0847デフォルトの名無しさん (アウアウウー Saaf-/TFo)
2021/05/14(金) 13:02:54.78ID:kX62fe1ba 君らも構うねー
>>681への数多の回答を経て「皆さんのおかげで」としか言及しない礼儀知らずなんぞ俺なら2度と助けようと思えないけどな
>>681への数多の回答を経て「皆さんのおかげで」としか言及しない礼儀知らずなんぞ俺なら2度と助けようと思えないけどな
848デフォルトの名無しさん (ワッチョイ 9b4f-CTTZ)
2021/05/14(金) 14:11:01.00ID:C4z8VNUC0 >>841
SQLでやってるの?
VBAでやってるの?
SQLなら会社、氏名、数値でグルーピングしてから合計求めりゃいいだろうし
VBAでやってるなら上からループして会社、氏名、数値をコレクションかディクショナリーに登録しておいて
同じ組み合わせのものが登録されてたら飛ばせばいいだけじゃないの?
SQLでやってるの?
VBAでやってるの?
SQLなら会社、氏名、数値でグルーピングしてから合計求めりゃいいだろうし
VBAでやってるなら上からループして会社、氏名、数値をコレクションかディクショナリーに登録しておいて
同じ組み合わせのものが登録されてたら飛ばせばいいだけじゃないの?
849デフォルトの名無しさん (オッペケ Sr99-v+G2)
2021/05/14(金) 16:00:12.91ID:bBl2sxC0r ほんとに、よう構うわ
850デフォルトの名無しさん (ワッチョイ 0f5f-JrGs)
2021/05/14(金) 16:15:08.56ID:N2rlLeCr0 暇人しかレスしない
そりゃ高齢化する罠
そりゃ高齢化する罠
851デフォルトの名無しさん (ワッチョイ 9b4f-CTTZ)
2021/05/14(金) 17:11:44.35ID:C4z8VNUC0 暇と時間は自分で作るもの
852デフォルトの名無しさん (ワッチョイ 538e-dhLD)
2021/05/14(金) 17:53:42.33ID:usYNgZ690 この「いつものあいつ」はperlスレで釣りしてたあいつだろ
回答がないと別ID自分に回答するクズだぞ
IDをコロコロ変えていることで気付け
回答がないと別ID自分に回答するクズだぞ
IDをコロコロ変えていることで気付け
853デフォルトの名無しさん (ワッチョイ 97da-drH/)
2021/05/14(金) 18:02:17.06ID:9jitt6PZ0 ここに若い人はいないと思われ
定年退職した60〜70のジジババ様がメインの予想
定年退職した60〜70のジジババ様がメインの予想
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 青銅聖闘士のパンチは音速←わかる 白銀聖闘士はその数倍←まぁわかる 黄金聖闘士は光速←は?
- 4時だから窓から4回ちんこ出した
- クマどもが冬眠拒否
- さわやかって
- 生活保護を受けている私だけど、おはようございます。
- 【朗報】ローソン「Мサイズのカップを購入してLサイズのコーヒーを入れてくださいね」 [455031798]
