!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part66
https://mevius.5ch.net/test/read.cgi/tech/1589085825/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part67
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 33da-3+hg)
2020/06/26(金) 02:01:29.56ID:uDfmpksE0180デフォルトの名無しさん (ワッチョイ 87da-VQSO)
2020/07/04(土) 02:38:36.13ID:VMWug14q0 素人にやらせた場合間違った結果を出すかもしれんが
その場合頼んだ側にも責任があるけどそれでも山田にやらせるか?
その場合頼んだ側にも責任があるけどそれでも山田にやらせるか?
181デフォルトの名無しさん (ワッチョイ 5301-JCxG)
2020/07/04(土) 03:10:27.15ID:42LT/T3f0 田中のほうが良いかな?
182デフォルトの名無しさん (アウアウエー Sa82-h0J+)
2020/07/04(土) 03:37:53.50ID:OxpkXjjxa 斎藤さんだぞ
183デフォルトの名無しさん (ワッチョイ 8a01-21HI)
2020/07/04(土) 04:04:04.69ID:IjVZd7O90 山田ができるのは座布団運びだけだろ
184デフォルトの名無しさん (ワッチョイ 8a01-5cl0)
2020/07/04(土) 07:02:36.51ID:VZt6Ms3K0 do whileとかほとんど使わないわ
あれ試行錯誤してる最中に脱出条件間違えて固まるとイライラってするんで
>>158こういうのは
途中で空白行挟んでたらどうすんのとか考えるとEnd(xlup)とか使って無難にforで回したい
最も空白行挟んでたらそこまでしか処理しないのかもしれんけど
それなら上から順に一旦回して空白行がどこに出るのか調べてからやるわ
全データ配列に格納してからやれば速度的にも問題ないと思うし
あれ試行錯誤してる最中に脱出条件間違えて固まるとイライラってするんで
>>158こういうのは
途中で空白行挟んでたらどうすんのとか考えるとEnd(xlup)とか使って無難にforで回したい
最も空白行挟んでたらそこまでしか処理しないのかもしれんけど
それなら上から順に一旦回して空白行がどこに出るのか調べてからやるわ
全データ配列に格納してからやれば速度的にも問題ないと思うし
185デフォルトの名無しさん (スップ Sdaa-tYaB)
2020/07/04(土) 07:59:26.14ID:yagtSNgld 観測地点が全国で2000ヶ所、1時間毎の観測結果3年分のデータがあって、8時間毎に観測出来なかった場合も踏まえて平均し、観測出来なかったのが8時間の内4時間以上あったら平均値も出力出来なかったとする。
で、その8時間の平均値は1時間ずつずれて24個分で1日のデ―タとなるんだが、それをさらに平均して1日の値とする
なんてのやったが1回限りでもVBA使わないと無理。
というか普通に考えてVBAでも無理だけどね。
で、その8時間の平均値は1時間ずつずれて24個分で1日のデ―タとなるんだが、それをさらに平均して1日の値とする
なんてのやったが1回限りでもVBA使わないと無理。
というか普通に考えてVBAでも無理だけどね。
186デフォルトの名無しさん (ワッチョイ 2780-2vUA)
2020/07/04(土) 09:41:06.65ID:htrp3xgD0 >>157
配列に入れたら順番に書き込んで条件の時だけ書き込みスキップじゃ駄目なの?
配列に入れたら順番に書き込んで条件の時だけ書き込みスキップじゃ駄目なの?
187デフォルトの名無しさん (ワッチョイ 1e8e-0gyK)
2020/07/04(土) 10:01:18.86ID:1naoKVTK0 >>185
お前の低い知能の頭ではできないだけだろ
お前の低い知能の頭ではできないだけだろ
188デフォルトの名無しさん (ワッチョイ 8a01-5cl0)
2020/07/04(土) 11:47:27.20ID:VZt6Ms3K0 簡単だよな
セルにどういう風にデータが並んでるかで多少の工夫がいるかもしれんけど
加減乗除のみのワンパターン
セルにどういう風にデータが並んでるかで多少の工夫がいるかもしれんけど
加減乗除のみのワンパターン
189デフォルトの名無しさん (ワッチョイ bf20-JOTr)
2020/07/04(土) 12:11:54.32ID:xB5SKVkx0 水口克也氏のExcelVBA入門講座って本を使ったことある人いますか?
最後のじゃんけんゲームを作る所が、どうしてもうまくいきません
最後のじゃんけんゲームを作る所が、どうしてもうまくいきません
190デフォルトの名無しさん (ドコグロ MM33-21HI)
2020/07/04(土) 12:23:35.41ID:KlM0EefbM191デフォルトの名無しさん (ワッチョイ bbda-fHqu)
2020/07/04(土) 12:37:06.40ID:/jHrZd8o0 8時間平均から24時間平均への変換は一般的なLPF処理だな
デジタル信号処理で数値データを扱う基本的な考え方だよ
デジタル信号処理で数値データを扱う基本的な考え方だよ
192デフォルトの名無しさん (ワッチョイ 8a01-5cl0)
2020/07/04(土) 13:05:03.59ID:VZt6Ms3K0 >>157
全要素forで回しながら
条件合うものだけを新しい配列newArrayにいれていけばいいじゃん
その後新しい配列から、データ空にしたシートに記入
新しい配列の要素数、特に1次元要素数(行数)だけど
Redim Preserveで順次増やしていくのはこの場合できないから、
一旦行数を確定するためだけにfor回してカウント
要素数確定したnewArray作ってから
もう一度for回して入れていけばいい
行列逆転させればredim preserve使って一発でもいけるか
特に巨大なデータでなければ間違い避けるために二回まわすなおれなら
行削除によって表自体の体裁を上に詰めていきたいっていうなら
最初にforを回した後、元の行数とnewArrayの行数の差だけ表の行を削除
データはすでに配列にとってあるんだからどこから削除しても構わない
全要素forで回しながら
条件合うものだけを新しい配列newArrayにいれていけばいいじゃん
その後新しい配列から、データ空にしたシートに記入
新しい配列の要素数、特に1次元要素数(行数)だけど
Redim Preserveで順次増やしていくのはこの場合できないから、
一旦行数を確定するためだけにfor回してカウント
要素数確定したnewArray作ってから
もう一度for回して入れていけばいい
行列逆転させればredim preserve使って一発でもいけるか
特に巨大なデータでなければ間違い避けるために二回まわすなおれなら
行削除によって表自体の体裁を上に詰めていきたいっていうなら
最初にforを回した後、元の行数とnewArrayの行数の差だけ表の行を削除
データはすでに配列にとってあるんだからどこから削除しても構わない
193デフォルトの名無しさん (ワッチョイ 8a01-21HI)
2020/07/04(土) 13:32:13.54ID:IjVZd7O90 >>191
それ一気に24時間平均でよくね?
それ一気に24時間平均でよくね?
194デフォルトの名無しさん (ワッチョイ bbda-fHqu)
2020/07/04(土) 13:43:57.26ID:/jHrZd8o0 いきなりデータ粒度を荒くするのは悪手
ましてや>>185の場合はじめに欠損データのノイズキャンセルも行っているのでまとめて行なうとデータの精度が低下する
ましてや>>185の場合はじめに欠損データのノイズキャンセルも行っているのでまとめて行なうとデータの精度が低下する
195デフォルトの名無しさん (アウアウエー Sa82-h0J+)
2020/07/04(土) 14:05:30.25ID:Em2AcreDa 24コマを1コマにするんだから
平らに均すのに精度もクソも無い気がする
平らに均すのに精度もクソも無い気がする
196デフォルトの名無しさん (ワッチョイ bbda-fHqu)
2020/07/04(土) 14:21:18.07ID:/jHrZd8o0 データ値の定常状態と過渡状態を理解していれば分かる
粒度が荒いと応答性が悪化するので現象の追従が遅れる
安定時のデータ値だけならともかくデータの変化を取りこぼすリスクが高くなるんだよ
粒度が荒いと応答性が悪化するので現象の追従が遅れる
安定時のデータ値だけならともかくデータの変化を取りこぼすリスクが高くなるんだよ
197デフォルトの名無しさん (アウアウエー Sa82-h0J+)
2020/07/04(土) 14:31:13.19ID:Em2AcreDa >>196
そりはモニタのアッパーとローワーにトリガー仕込んだら良い話ではないのでしゅか?
そりはモニタのアッパーとローワーにトリガー仕込んだら良い話ではないのでしゅか?
198デフォルトの名無しさん (ワッチョイ bbda-fHqu)
2020/07/04(土) 14:44:04.22ID:/jHrZd8o0 上限、下限決め打ちの場合はトリガ仕込むのでも通用はする
ただ一日当たりの変化量でアクション起こす場合はどうする?
移動差分(微分)を連続的にデータ処理しないと難しい
ただ一日当たりの変化量でアクション起こす場合はどうする?
移動差分(微分)を連続的にデータ処理しないと難しい
199デフォルトの名無しさん (アウアウエー Sa82-qC4h)
2020/07/04(土) 14:48:04.16ID:ZiXQ0AsVa 喧嘩はやめよう
200157 (ワッチョイ 87cc-ERT+)
2020/07/04(土) 14:58:18.35ID:oup49XFx0 >>186
仮の配列を作り、編集してaryに入れるようにしたいのですが
これだと、全て空欄になってしまいます
Dim i As Long, j As Long, cnt As Long, cnt2 As Long
i = Cells(Rows.Count, 1).End(xlUp).Row
'仮の配列
ReDim Kariary(i, 30) As Variant
Kariary = Range("A2:AD" & i).Value
'最終的に代入する配列
ReDim ary(i - 1, 30) As Variant
For cnt = 1 To i - 1
If Not Kariary(cnt, 1) = 66 Or _
Kariary(cnt, 6) = 1000 Or _
Kariary(cnt, 28) = "" Then
j = UBound(ary) + 1
If j < i - 1 Then
For cnt2 = 1 To 30
ReDim Preserve ary(j, 30) As Variant
ary(j, cnt2) = Kariary(cnt, cnt2)
Next cnt2
End If
End If
Next cnt
'シートを一旦クリア
Cells.Clear
Range("A2:AD" & i) = ary
仮の配列を作り、編集してaryに入れるようにしたいのですが
これだと、全て空欄になってしまいます
Dim i As Long, j As Long, cnt As Long, cnt2 As Long
i = Cells(Rows.Count, 1).End(xlUp).Row
'仮の配列
ReDim Kariary(i, 30) As Variant
Kariary = Range("A2:AD" & i).Value
'最終的に代入する配列
ReDim ary(i - 1, 30) As Variant
For cnt = 1 To i - 1
If Not Kariary(cnt, 1) = 66 Or _
Kariary(cnt, 6) = 1000 Or _
Kariary(cnt, 28) = "" Then
j = UBound(ary) + 1
If j < i - 1 Then
For cnt2 = 1 To 30
ReDim Preserve ary(j, 30) As Variant
ary(j, cnt2) = Kariary(cnt, cnt2)
Next cnt2
End If
End If
Next cnt
'シートを一旦クリア
Cells.Clear
Range("A2:AD" & i) = ary
201デフォルトの名無しさん (オッペケ Sr23-OmMV)
2020/07/04(土) 15:04:44.69ID:xhESn47nr はい
202デフォルトの名無しさん (アウアウエー Sa82-h0J+)
2020/07/04(土) 15:22:36.21ID:ZKMg5qK7a203デフォルトの名無しさん (ワッチョイ 8a01-5cl0)
2020/07/04(土) 15:31:40.93ID:VZt6Ms3K0 >>200
頭が痛くなってくるんだけど
まずifの条件がおかしい
自分で簡単の作って確かめてみ
こういうの
思ってるような動きするか確かめてみ
プログラムってのはそういうことしないとだめだわ
まっさらなxlsm作ってデータも簡単のシートに作ってやってみ
そうすりゃすぐ分かる
Sub teeee()
With ActiveSheet
If Not .Cells(1, 1) = 66 Or .Cells(2, 1) = 2 Then
MsgBox "ok"
End If
End With
End Sub
例えばさ、
ary(j, cnt2) = Kariary(cnt, cnt2)
これにブレークポイントつけてここに到達するケースがあるか調べてみ
それだけで何か分かるわ
まぁだれか正解のコード書いちゃうんだろうけど
デバッグ
ブレークポイント
これ使えないとまともなコード書けないぞ
頭が痛くなってくるんだけど
まずifの条件がおかしい
自分で簡単の作って確かめてみ
こういうの
思ってるような動きするか確かめてみ
プログラムってのはそういうことしないとだめだわ
まっさらなxlsm作ってデータも簡単のシートに作ってやってみ
そうすりゃすぐ分かる
Sub teeee()
With ActiveSheet
If Not .Cells(1, 1) = 66 Or .Cells(2, 1) = 2 Then
MsgBox "ok"
End If
End With
End Sub
例えばさ、
ary(j, cnt2) = Kariary(cnt, cnt2)
これにブレークポイントつけてここに到達するケースがあるか調べてみ
それだけで何か分かるわ
まぁだれか正解のコード書いちゃうんだろうけど
デバッグ
ブレークポイント
これ使えないとまともなコード書けないぞ
204デフォルトの名無しさん (ワッチョイ 8a01-5cl0)
2020/07/04(土) 15:38:09.49ID:VZt6Ms3K0 それだけじゃないからな
redim preserve は、くせ者
redim preserve は、くせ者
205デフォルトの名無しさん (ワッチョイ 4602-JJ0U)
2020/07/04(土) 15:42:33.80ID:RSp2d2NT0 redimしなくても十分な量確保しといてどこまで使ったか変数に入れときゃいいだけだろ
わざわざ負荷かかることする意味がない
わざわざ負荷かかることする意味がない
206デフォルトの名無しさん (アウアウエー Sa82-qC4h)
2020/07/04(土) 15:56:38.11ID:D9As6lACa プロはとりあえず配列に格納するのが好きなんです
207デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/04(土) 16:03:39.61ID:DEQjmcqBd208デフォルトの名無しさん (スププ Sdaa-bNAA)
2020/07/04(土) 16:04:11.08ID:qCMIttGKd 十分な量を確保
あとで失敗するパターン
あとで失敗するパターン
209デフォルトの名無しさん (アウアウエー Sa82-h0J+)
2020/07/04(土) 16:09:00.53ID:MUUOvXMba data.csv
年月日,時間,気温,湿度
2020/07/04,11:15,28.5℃,78%
2020/07/04,12:15,ー,78%
2020/07/04,13:15,28.5℃,ー
2020/07/04,14:15,ー,ー
2020/07/04,15:15,28.5℃,78%
・・・
・・
・
1カ月データとして24時間×31日=744行+先頭行
1年12ヶ月データで8,928行かぁ
データスルーとかデータ穴埋めとかって
どっちの場合も
VBA じゃなくてデータベースのSQLで出来たりするのかな?
年月日,時間,気温,湿度
2020/07/04,11:15,28.5℃,78%
2020/07/04,12:15,ー,78%
2020/07/04,13:15,28.5℃,ー
2020/07/04,14:15,ー,ー
2020/07/04,15:15,28.5℃,78%
・・・
・・
・
1カ月データとして24時間×31日=744行+先頭行
1年12ヶ月データで8,928行かぁ
データスルーとかデータ穴埋めとかって
どっちの場合も
VBA じゃなくてデータベースのSQLで出来たりするのかな?
210デフォルトの名無しさん (ワッチョイ 1bac-OmMV)
2020/07/04(土) 16:22:41.23ID:DNEaiqy30 おれならそもそも案件をRDBMSに移す提案をするわ
だめなら元データはどうせCSVやJsonかなにかだろうし、VBAから普通にRDBにいれてプロシージャ叩くとか
外部プログラムで直に処理するね
元データがExcelでExcel縛りなら、どうやって案件から手を引くかを考えるねw
Excel起動するVBAでやることじゃない
まあ金次第でもあるけど
だめなら元データはどうせCSVやJsonかなにかだろうし、VBAから普通にRDBにいれてプロシージャ叩くとか
外部プログラムで直に処理するね
元データがExcelでExcel縛りなら、どうやって案件から手を引くかを考えるねw
Excel起動するVBAでやることじゃない
まあ金次第でもあるけど
211デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/04(土) 16:30:22.62ID:DEQjmcqBd212デフォルトの名無しさん (スププ Sdaa-bNAA)
2020/07/04(土) 16:35:45.74ID:qCMIttGKd pythonでデータクリーニングさせれば?
213デフォルトの名無しさん (ワッチョイ 8a01-21HI)
2020/07/04(土) 16:42:21.08ID:IjVZd7O90214デフォルトの名無しさん (ワッチョイ 8a01-21HI)
2020/07/04(土) 16:47:20.12ID:IjVZd7O90215デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/04(土) 17:02:54.82ID:DEQjmcqBd216デフォルトの名無しさん (アウアウウー Sacf-z1wt)
2020/07/04(土) 17:18:55.42ID:pfDbF4Mra どうせ適当なデータでっち上げて表示させても気づかないだろ
217200 (ワッチョイ 87cc-ERT+)
2020/07/04(土) 17:35:53.50ID:oup49XFx0218デフォルトの名無しさん (ワッチョイ 8e02-JJ0U)
2020/07/04(土) 17:46:55.47ID:aRnpDm0b0 5ちゃんのExcelVBA質問スレでMonaさんに対してマウントを取りたいのですが、
Mount Mona
と記述してもマウントが取れません
どうすればいいですか?
Mount Mona
と記述してもマウントが取れません
どうすればいいですか?
219デフォルトの名無しさん (ワッチョイ 1e8e-0gyK)
2020/07/04(土) 17:49:24.23ID:1naoKVTK0220デフォルトの名無しさん (ワッチョイ 87cc-ERT+)
2020/07/04(土) 17:54:43.71ID:oup49XFx0 A列の2行目以降に値あり、B列の2行目以降に同じ行のA列の値が
上から何回目に出現したかを返す関数として「=COUNTIF($A$1:A2,A2」を使っています。
同じことを配列で使用する方法を教えて下さい。
(A列の値は並び替えをしてあります)
Dim EndRow As Long, r As Long
EndRow = Cells(Rows.Count, 1).End(xlUp).Row
ReDim ary(EndRow, 2)
ary = Range("A2:B" & EndRow).Value
For r = 1 To EndRow - 1
ary(r, 2) = Application.WorksheetFunction.CountIf _
(Range(ary(1, 1), ary(r, 1)), ary(r, 1))
Next r
これだとRangeメソッドは失敗しましたになります。
上から何回目に出現したかを返す関数として「=COUNTIF($A$1:A2,A2」を使っています。
同じことを配列で使用する方法を教えて下さい。
(A列の値は並び替えをしてあります)
Dim EndRow As Long, r As Long
EndRow = Cells(Rows.Count, 1).End(xlUp).Row
ReDim ary(EndRow, 2)
ary = Range("A2:B" & EndRow).Value
For r = 1 To EndRow - 1
ary(r, 2) = Application.WorksheetFunction.CountIf _
(Range(ary(1, 1), ary(r, 1)), ary(r, 1))
Next r
これだとRangeメソッドは失敗しましたになります。
221デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/04(土) 18:14:15.70ID:DEQjmcqBd222デフォルトの名無しさん (ワッチョイ 8a01-5cl0)
2020/07/04(土) 19:58:17.09ID:VZt6Ms3K0 >>185
批判したいとかそういうもんじゃないんだけど
わりと大きなデータ扱うことに興味があったんでどんなもんか実際やってみた
1カ所分しかやってないんだけど
csvから取得して平均値26280個をシート記入するまで1秒もかかってない感じ
一日ごとの平均は出してないけどこの分じゃそれほど差はないと思う
もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?
も少し情報提供すると
https://www.data.jma.go.jp/gmd/risk/obsdl/index.php#
ここから3年分時間別気温データを、1年ごとcsvにして三個ダウンロード
https://www.moug.net/tech/exvba/0060086.html
これと同じ感じでOpen使って取得
年ごとに必要な気温データのみ1次元配列に入れる
3つの配列を1つの配列にまとめる
平均値入れていく配列AveArrayを新しく作る(あえてString宣言)
あとはforで回しながら過去8時間分のデータを調べてデータない場合の個数を調べて
4つ以上ならAveArrayにN/Aを入れる
4つ未満なら8時間合計して、有効データ数で除算し、AveArrayに入れる
AveArrayを列数1の2次元配列にしてからシートに一括記入
なんかおれ間違ってる?
批判したいとかそういうもんじゃないんだけど
わりと大きなデータ扱うことに興味があったんでどんなもんか実際やってみた
1カ所分しかやってないんだけど
csvから取得して平均値26280個をシート記入するまで1秒もかかってない感じ
一日ごとの平均は出してないけどこの分じゃそれほど差はないと思う
もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?
も少し情報提供すると
https://www.data.jma.go.jp/gmd/risk/obsdl/index.php#
ここから3年分時間別気温データを、1年ごとcsvにして三個ダウンロード
https://www.moug.net/tech/exvba/0060086.html
これと同じ感じでOpen使って取得
年ごとに必要な気温データのみ1次元配列に入れる
3つの配列を1つの配列にまとめる
平均値入れていく配列AveArrayを新しく作る(あえてString宣言)
あとはforで回しながら過去8時間分のデータを調べてデータない場合の個数を調べて
4つ以上ならAveArrayにN/Aを入れる
4つ未満なら8時間合計して、有効データ数で除算し、AveArrayに入れる
AveArrayを列数1の2次元配列にしてからシートに一括記入
なんかおれ間違ってる?
223デフォルトの名無しさん (アウアウエー Sa82-qC4h)
2020/07/04(土) 20:07:02.00ID:ZiXQ0AsVa こうやって実際にやってみる人は素晴らしいと思う
224デフォルトの名無しさん (ワッチョイ 46f7-5RIT)
2020/07/04(土) 20:15:53.04ID:/OqMGH1W0225デフォルトの名無しさん (アウアウウー Sacf-ewff)
2020/07/04(土) 20:17:12.12ID:JHoncA5/a countifじゃなくてloopでfindにすればよいのでは
226デフォルトの名無しさん (ワッチョイ 87da-VQSO)
2020/07/04(土) 22:27:57.95ID:VMWug14q0 VBAは手段の一つ、目的はデータの加工ってわりきればすぐ終わる作業なのに
無理してVBAだけでやろうとするからいつまでもおわらない
無理してVBAだけでやろうとするからいつまでもおわらない
227デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/04(土) 23:58:08.33ID:DEQjmcqBd >>222
ちょっと見た感じほぼ、俺と同じ感じだね。
>もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?
オイオイ、そんな素人なわけ無いだろ。
Line inputを使ったか、それより速いバイナリ読み込み+StrConv使ったかについては覚えて居ない。
まあ、速いといっても劇的に速くなる訳じゃないから、そんなことよりマルチプロセスってことでLine inputのままだったかも。
オレがやった時のデータは日付+24列のデータだった。
貼り付けは元データ込みで、元データの右に8時間平均と1日平均書いたと思うが、もしかしたら8時間平均は出力しなかったかも。
多分読み込みよりも列を増やした二次元配列にして書き込みにも利用してたと思う。
ちょっと見た感じほぼ、俺と同じ感じだね。
>もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?
オイオイ、そんな素人なわけ無いだろ。
Line inputを使ったか、それより速いバイナリ読み込み+StrConv使ったかについては覚えて居ない。
まあ、速いといっても劇的に速くなる訳じゃないから、そんなことよりマルチプロセスってことでLine inputのままだったかも。
オレがやった時のデータは日付+24列のデータだった。
貼り付けは元データ込みで、元データの右に8時間平均と1日平均書いたと思うが、もしかしたら8時間平均は出力しなかったかも。
多分読み込みよりも列を増やした二次元配列にして書き込みにも利用してたと思う。
228デフォルトの名無しさん (スップ Sd4a-aBdg)
2020/07/05(日) 00:48:44.07ID:poq4gvQsd 複数のファイルの名前を編集したい
具体的には、全てのファイルのファイル名に、2020と入れたい。
具体的には、全てのファイルのファイル名に、2020と入れたい。
229デフォルトの名無しさん (ワッチョイ 87da-VQSO)
2020/07/05(日) 00:51:15.79ID:C4Jqu0Op0 DOSコマンドでできる
230デフォルトの名無しさん (ワッチョイ 27ce-BXkI)
2020/07/05(日) 01:49:00.12ID:UMxIfgnY0 >>228
ファイル名のどこに入れるの?先頭?真ん中?末尾?
ファイル名のどこに入れるの?先頭?真ん中?末尾?
231デフォルトの名無しさん (ワッチョイ bfe6-s8sF)
2020/07/05(日) 01:59:51.75ID:S3+IlzuQ0232デフォルトの名無しさん (ワッチョイ 1e8e-0gyK)
2020/07/05(日) 02:04:39.40ID:sCEs+yW00233デフォルトの名無しさん (ワッチョイ 46f7-5RIT)
2020/07/05(日) 03:08:45.12ID:EDU6Wt820 powershellでやれ
234デフォルトの名無しさん (ワッチョイ 8a01-c9XW)
2020/07/05(日) 07:10:34.18ID:Mq9FuBzw0 標準モジュールに、
Sub 1()
・・・
・・・
End Sub
Sub 2()
・・・
・・・
End Sub
Sub 3()
・・・
・・・
End Sub
と、書いていき、Sub 1()がSub 2()を呼び、Sub 2()がSub 3()を呼ぶ、って可能でしょうか?
Sub 1()
・・・
・・・
End Sub
Sub 2()
・・・
・・・
End Sub
Sub 3()
・・・
・・・
End Sub
と、書いていき、Sub 1()がSub 2()を呼び、Sub 2()がSub 3()を呼ぶ、って可能でしょうか?
235デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/05(日) 07:16:23.84ID:2yUokYO9d236デフォルトの名無しさん (ワッチョイ 8a01-5cl0)
2020/07/05(日) 07:44:05.89ID:VaIdJVAp0 >>227
せっかくなんで
csvは日付+24列に加工してみた
1カ所の8時間ごと平均データ26280個を作って1列に貼り付けるfunctionを作る
引数は貼り付け先の列の列番号
これを
@1回だけ実行 A列のみに貼り付け
A100回実行 A列から右100列に1列ごと貼り付け
B200回実行 A列から右200列に1列ごと貼り付け
timer付けて一応測ってみた
@0.31秒
A32秒
B67秒
2000回だと12分ぐらいか?
CPU i5-4670
メモリ 24GB
Win7
実行時はPCでテレビ見ながらJane2個起動
firefox、Janetterなど20個以上のアプリが動いてる
環境やらデータの数値の大きさやらで
差は2000倍に拡大する可能性があるんで何とも言えない
うちの職場のしょぼいPCでやったらもっと酷いと思う
せっかくなんで
csvは日付+24列に加工してみた
1カ所の8時間ごと平均データ26280個を作って1列に貼り付けるfunctionを作る
引数は貼り付け先の列の列番号
これを
@1回だけ実行 A列のみに貼り付け
A100回実行 A列から右100列に1列ごと貼り付け
B200回実行 A列から右200列に1列ごと貼り付け
timer付けて一応測ってみた
@0.31秒
A32秒
B67秒
2000回だと12分ぐらいか?
CPU i5-4670
メモリ 24GB
Win7
実行時はPCでテレビ見ながらJane2個起動
firefox、Janetterなど20個以上のアプリが動いてる
環境やらデータの数値の大きさやらで
差は2000倍に拡大する可能性があるんで何とも言えない
うちの職場のしょぼいPCでやったらもっと酷いと思う
237234 (ワッチョイ 8a01-c9XW)
2020/07/05(日) 07:54:44.65ID:Mq9FuBzw0 >>234をグーグルで検索するには、どういうキーワードで検索すればいいでしょうか?
238デフォルトの名無しさん (ワッチョイ 872c-+ZV3)
2020/07/05(日) 07:57:11.74ID:R1IME3L+0 >>228
Ruby で作った。
ただし、DryRun なので実際には実行されません!
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/*"
src_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.each do |full_path| # 1つずつ処理する
dest_path = src_dir + "/" + "2020_" + File.basename( full_path ) # ファイル名
FileUtils::DryRun.move( full_path, dest_path )
end
# mv C:/Users/Owner/Documents/a.txt
# C:/Users/Owner/Documents/2020_a.txt
Ruby で作った。
ただし、DryRun なので実際には実行されません!
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/*"
src_dir = File.dirname( glob_pattern ) # ディレクトリパスだけを取り出す
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.each do |full_path| # 1つずつ処理する
dest_path = src_dir + "/" + "2020_" + File.basename( full_path ) # ファイル名
FileUtils::DryRun.move( full_path, dest_path )
end
# mv C:/Users/Owner/Documents/a.txt
# C:/Users/Owner/Documents/2020_a.txt
239234 (ワッチョイ 8a01-c9XW)
2020/07/05(日) 08:01:08.68ID:Mq9FuBzw0240デフォルトの名無しさん (ワッチョイ 8a01-5cl0)
2020/07/05(日) 08:01:41.62ID:VaIdJVAp0241デフォルトの名無しさん (アウアウエー Sa82-h0J+)
2020/07/05(日) 08:04:40.53ID:nDNnOTMWa >>234
普通に最後にサブルーチンの名前呼び出し書いたら良いのでは?
Sub 1()
・・・
・・・
2
End Sub
Sub 2()
・・・
・・・
3
End Sub
Sub 3()
・・・
・・・
End Sub
普通に最後にサブルーチンの名前呼び出し書いたら良いのでは?
Sub 1()
・・・
・・・
2
End Sub
Sub 2()
・・・
・・・
3
End Sub
Sub 3()
・・・
・・・
End Sub
242234 (ワッチョイ 8a01-c9XW)
2020/07/05(日) 08:05:40.42ID:Mq9FuBzw0 >>240
どうもです。
どうもです。
243234 (ワッチョイ 8a01-c9XW)
2020/07/05(日) 08:06:29.51ID:Mq9FuBzw0 >>241
どうもです。
どうもです。
244デフォルトの名無しさん (ワッチョイ 8f5f-ewff)
2020/07/05(日) 11:36:58.35ID:CJtrxhlB0 >>242
呼び出しは、可読性考慮すると文頭にCall書いた方がいいよ
呼び出しは、可読性考慮すると文頭にCall書いた方がいいよ
245デフォルトの名無しさん (ワッチョイ 0a2f-+ZV3)
2020/07/05(日) 13:58:43.83ID:U1BgWcwt0 >>207
VBAでやっても6時間はかかりすぎな気がするが
マシンスペックとコード晒してみ
それ、計算式でやって再計算に1時間以上かかるのか?
当然試してるよな
マルチプロセスもどうやってやったのか気になるが
俺なら間違いなくDBにつっこんでSQLでやる
そういえばエクセルシートなりCSVなりに対してSQL投げる方法がいくつかあったけど
それは試したのか?
VBAでやっても6時間はかかりすぎな気がするが
マシンスペックとコード晒してみ
それ、計算式でやって再計算に1時間以上かかるのか?
当然試してるよな
マルチプロセスもどうやってやったのか気になるが
俺なら間違いなくDBにつっこんでSQLでやる
そういえばエクセルシートなりCSVなりに対してSQL投げる方法がいくつかあったけど
それは試したのか?
246デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/05(日) 15:07:25.29ID:2yUokYO9d247デフォルトの名無しさん (ワッチョイ 1bac-OmMV)
2020/07/05(日) 15:11:46.86ID:BTTSshKd0248デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/05(日) 15:16:11.04ID:2yUokYO9d249デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/05(日) 15:22:54.54ID:2yUokYO9d マルチプロセスはExcel.Application8個(自分含めて)呼び出して、自分のブック開いて別CPUにやらせるプロシージャをApplication.OnTimeで呼び出したかSetTimerで呼び出したかだったんじゃないかな。
細かい連携しないで済むようにしてたと思う。
複雑なことはやってねえよ。
細かい連携しないで済むようにしてたと思う。
複雑なことはやってねえよ。
250220 (ワッチョイ 87cc-ERT+)
2020/07/05(日) 19:59:50.06ID:Y6miK3VP0251デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/05(日) 21:27:28.28ID:2yUokYO9d >>236
う〜ん、分からん。
俺もやってみたんだが、同じような時間だった。
観測値はテキ卜一に0〜100をランダムで書き込み。
観測出来なかった値は当時の記憶を頼りに9999とした。
確か9998もあったけど変わらんだろう。
前に書いた制約というかは、1年分のファイルが50〜60個ぐらいだったということ。
つまり県ごとのファイルで観測地が多い所は複数ファイルって感じ。
だから実際は行頭に観測地名が入って、その後に何かの数値とかが幾つかあって日付、観測値という具合だった。
年ごとのファイルが完全に固定フォーマットで無かったか、俺が信用してなかったか、観測値名で検索してたと思う。
そこから365日分は連続してたと思うけど。
それでも6時間は掛からんような気がしてきた。
もっと複雑なことやってたのかなあ。
どっちにしても後だしで申し訳ない。
う〜ん、分からん。
俺もやってみたんだが、同じような時間だった。
観測値はテキ卜一に0〜100をランダムで書き込み。
観測出来なかった値は当時の記憶を頼りに9999とした。
確か9998もあったけど変わらんだろう。
前に書いた制約というかは、1年分のファイルが50〜60個ぐらいだったということ。
つまり県ごとのファイルで観測地が多い所は複数ファイルって感じ。
だから実際は行頭に観測地名が入って、その後に何かの数値とかが幾つかあって日付、観測値という具合だった。
年ごとのファイルが完全に固定フォーマットで無かったか、俺が信用してなかったか、観測値名で検索してたと思う。
そこから365日分は連続してたと思うけど。
それでも6時間は掛からんような気がしてきた。
もっと複雑なことやってたのかなあ。
どっちにしても後だしで申し訳ない。
252デフォルトの名無しさん (ワッチョイ 8a01-21HI)
2020/07/05(日) 22:26:04.09ID:ys79fvH60253デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/05(日) 22:29:31.22ID:2yUokYO9d254238 (ワッチョイ 872c-+ZV3)
2020/07/05(日) 22:43:00.48ID:R1IME3L+0 ファイル名の先頭に、2020_ を付けるぐらい、robocopy で出来ないのか?
255デフォルトの名無しさん (ワッチョイ 8a01-21HI)
2020/07/05(日) 22:49:17.55ID:ys79fvH60 2016ならよほど変なことをしてないと数時間とかかからんと思う
256デフォルトの名無しさん (ワッチョイ 87da-VQSO)
2020/07/05(日) 23:53:51.99ID:C4Jqu0Op0 2020_2020_2020_2020・・・・
257デフォルトの名無しさん (ワッチョイ ea24-bNAA)
2020/07/06(月) 00:43:25.66ID:Cn1gvhVh0 officeが32bitだったというオチは?
258デフォルトの名無しさん (オッペケ Sr23-aBdg)
2020/07/06(月) 06:39:12.08ID:NN5xIHVpr workbookとworksheetって何が違うか。
259デフォルトの名無しさん (ワッチョイ 8a01-21HI)
2020/07/06(月) 07:15:30.65ID:5mzvDM1u0 キングジムファイルと綴じられてる一覧表って感じかな
260デフォルトの名無しさん (ワッチョイ 27ce-BXkI)
2020/07/06(月) 08:12:33.04ID:XvhlV03D0 32bitと64bitで計算スピードの差は2倍もないような
261デフォルトの名無しさん (オッペケ Sr23-aBdg)
2020/07/06(月) 08:39:32.35ID:NN5xIHVpr Activesheet.cells(1.1).Activate
Activesheet.Paste
は上手くいくのに、
Activesheet.cells(1.1).Paste
は何でダメなんですか?
Activesheet.Paste
は上手くいくのに、
Activesheet.cells(1.1).Paste
は何でダメなんですか?
262デフォルトの名無しさん (ワッチョイ 8aea-Qwhy)
2020/07/06(月) 09:18:02.55ID:Ag715axD0 >>261
.pasteは、worsheetのメンバであってrangeやcellsのメンバじゃないから、かな?
.pasteは、worsheetのメンバであってrangeやcellsのメンバじゃないから、かな?
263デフォルトの名無しさん (ワッチョイ 8749-OmMV)
2020/07/06(月) 09:49:31.89ID:Smcv6rvz0 パラメータ Destinationがあるから
ワイはPasteSpecialのほうが好き
ワイはPasteSpecialのほうが好き
264デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/06(月) 12:08:40.63ID:0NryXgvDd265デフォルトの名無しさん (ワッチョイ 87cc-ERT+)
2020/07/06(月) 18:39:32.80ID:XttWreH00 For
処理1
処理2
処理3
処理4
Next
よりも
For
処理1
Next
For
処理2
Next
For
処理3
Next
For
処理4
Next
の方が処理が早い傾向がありますが、そういうものですか?
処理1
処理2
処理3
処理4
Next
よりも
For
処理1
Next
For
処理2
Next
For
処理3
Next
For
処理4
Next
の方が処理が早い傾向がありますが、そういうものですか?
266デフォルトの名無しさん (ワッチョイ 3aba-/RNd)
2020/07/06(月) 19:08:39.04ID:tFUllOPh0267デフォルトの名無しさん (ワッチョイ 3aba-/RNd)
2020/07/06(月) 19:10:33.89ID:tFUllOPh0 てか、もうRubyは徒花だったな。
人気もダダ下がりだし。
人気もダダ下がりだし。
268デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/06(月) 20:45:52.99ID:0NryXgvDd269デフォルトの名無しさん (ワッチョイ 0a2f-+ZV3)
2020/07/06(月) 20:59:38.60ID:aGu/2bZb0270デフォルトの名無しさん (ワッチョイ 3aba-/RNd)
2020/07/06(月) 21:12:06.08ID:tFUllOPh0 >>268
どこでもかしこでもRubyで書いて押し付けてきて、「出来だよ!」っていうオジサンがいるのよ。
WSHスレでは「Rubyおじさん」として有名だった。
が、自分よりスキルの上な奴がコードをうしたら黙り込む。
こんなところにまで出張いてるとはね…。
無視推奨。Rubyはオワコンだし。
どこでもかしこでもRubyで書いて押し付けてきて、「出来だよ!」っていうオジサンがいるのよ。
WSHスレでは「Rubyおじさん」として有名だった。
が、自分よりスキルの上な奴がコードをうしたら黙り込む。
こんなところにまで出張いてるとはね…。
無視推奨。Rubyはオワコンだし。
271デフォルトの名無しさん (アウアウエー Sa82-qC4h)
2020/07/06(月) 21:13:16.26ID:K1goXTAAa じゃあVBAはお爺ちゃんだろ
272デフォルトの名無しさん (ワッチョイ 3aba-/RNd)
2020/07/06(月) 21:17:13.18ID:tFUllOPh0 >>271
VBAは「頼れるジジイ」だろ。何言ってんの?
VBAは「頼れるジジイ」だろ。何言ってんの?
273デフォルトの名無しさん (ワッチョイ 27ce-BXkI)
2020/07/06(月) 21:29:12.52ID:XvhlV03D0274デフォルトの名無しさん (ワッチョイ 87da-VQSO)
2020/07/06(月) 22:27:45.01ID:33E9zFJO0 Rubyの話がしたければRubyのスレ行けばいいのにね
275デフォルトの名無しさん (スプッッ Sd4a-tYaB)
2020/07/07(火) 12:27:17.68ID:mk51G87Dd276デフォルトの名無しさん (ワッチョイ 87da-VQSO)
2020/07/07(火) 19:51:41.03ID:CAdbpiIn0 宣伝だろ
277デフォルトの名無しさん (ワッチョイ 8a01-c9XW)
2020/07/07(火) 20:15:33.65ID:2cf+0s2v0 音楽のmidiファイルを作りたい、つまりバイナリファイルを作りたい者です。で、
↓を試してみたいのですが、"C3"にバイナリの配列を書き込まなければいけません。
この場合、どうやってexcelのセルに、バイナリの配列データを書き込むのでしょうか?
https://oshiete.goo.ne.jp/qa/8402512.html
Sub test()
TEMP = Worksheets("Sheet1").Range("C3")
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
For I = 1 To Len(TEMP) Step 2
BIN((I - 1) / 2) = Val("&H" & Mid(TEMP, I, 2))
Next I
Open "1.BIN" For Binary As #1
Put #1, , BIN
Close #1
End Sub
↓を試してみたいのですが、"C3"にバイナリの配列を書き込まなければいけません。
この場合、どうやってexcelのセルに、バイナリの配列データを書き込むのでしょうか?
https://oshiete.goo.ne.jp/qa/8402512.html
Sub test()
TEMP = Worksheets("Sheet1").Range("C3")
ReDim BIN(Len(TEMP) / 2 - 1) As Byte
For I = 1 To Len(TEMP) Step 2
BIN((I - 1) / 2) = Val("&H" & Mid(TEMP, I, 2))
Next I
Open "1.BIN" For Binary As #1
Put #1, , BIN
Close #1
End Sub
278デフォルトの名無しさん (ワッチョイ 1bac-OmMV)
2020/07/07(火) 20:25:40.74ID:BPFgnJg70 なんでVBAでやるの?
279デフォルトの名無しさん (ブーイモ MMef-aKnn)
2020/07/07(火) 20:27:13.84ID:z4TbLErcM VBAスレだから
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】日本代表MF 中村敬斗 ボリビア戦のスーパーゴールに「惚れるわ」「痺れる程のゴールこれでご飯何杯いけるのよ」 [阿弥陀ヶ峰★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 自閉症が「んなっしょい」と連呼するお🏡
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
- 結婚しないやつは異性は嫌いなの?
