Excel VBA 質問スレ Part67

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 33da-3+hg)
垢版 |
2020/06/26(金) 02:01:29.56ID:uDfmpksE0
!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
2020/07/04(土) 15:56:38.11ID:D9As6lACa
プロはとりあえず配列に格納するのが好きなんです
2020/07/04(土) 16:03:39.61ID:DEQjmcqBd
>>187
>>190
やって見てから言えよw
問題は時間だ。

2000x365x24x3=52560000

100列で50万行だぞ。
実際やったわけだが、普通にやって6時間とかかかる感じだった。
勿論、初心者じゃないから2次元配列使うのも当然やってる。

まあ、6時間もかけたく無かったからマルチプロセスにして1時間ぐらいにしたけどな。
2020/07/04(土) 16:04:11.08ID:qCMIttGKd
十分な量を確保

あとで失敗するパターン
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(土) 16:22:41.23ID:DNEaiqy30
おれならそもそも案件をRDBMSに移す提案をするわ
だめなら元データはどうせCSVやJsonかなにかだろうし、VBAから普通にRDBにいれてプロシージャ叩くとか
外部プログラムで直に処理するね

元データがExcelでExcel縛りなら、どうやって案件から手を引くかを考えるねw
Excel起動するVBAでやることじゃない
まあ金次第でもあるけど
2020/07/04(土) 16:30:22.62ID:DEQjmcqBd
>>209
う〜ん、場所毎だから表になるっちゃあなるけど、SQLでやろうとは思わなかったし、どうやってやるのかも思い付かんわ。
仕事でSQLばかり触ってるが。

>>210
おう、確かに元データはCSVだった。
SQLで上手いことやるのが思い付かんが。
2020/07/04(土) 16:35:45.74ID:qCMIttGKd
pythonでデータクリーニングさせれば?
2020/07/04(土) 16:42:21.08ID:IjVZd7O90
>>196
> 安定時のデータ値だけならともかくデータの変化を取りこぼすリスクが高くなるんだよ
平均とってる時点で取りこぼしとか意味不明なんだけどw
2020/07/04(土) 16:47:20.12ID:IjVZd7O90
>>207
2000列で高々3万行程度だろ
Excelの計算式はマルチスレッドで動くから自称「初心者じゃない」君のVBAより速いと思うぞ
2020/07/04(土) 17:02:54.82ID:DEQjmcqBd
>>214
バーカw
やってから言え。
本当バカだなあ。

そもそもファイル重くて碌に動かねえよ。
2020/07/04(土) 17:18:55.42ID:pfDbF4Mra
どうせ適当なデータでっち上げて表示させても気づかないだろ
2020/07/04(土) 17:35:53.50ID:oup49XFx0
>>203
おっしゃる通りでした。
IFに問題があったみたいです。ありがとうございました。
2020/07/04(土) 17:46:55.47ID:aRnpDm0b0
5ちゃんのExcelVBA質問スレでMonaさんに対してマウントを取りたいのですが、
Mount Mona
と記述してもマウントが取れません
どうすればいいですか?
219デフォルトの名無しさん (ワッチョイ 1e8e-0gyK)
垢版 |
2020/07/04(土) 17:49:24.23ID:1naoKVTK0
>>207
お前が馬鹿なだけだろ
全部メモリーに置く理由もない
己の頭の問題を仕様の問題とすり替えるな
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メソッドは失敗しましたになります。
2020/07/04(土) 18:14:15.70ID:DEQjmcqBd
>>219
出来もしないこと言ってるバカ?
それとも、それ迄のやり取りすら出来ないバカ?

手作業やExcel数式でやってから言え。
ちゃんとそれ迄のやり取りも読んでから言えよw
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次元配列にしてからシートに一括記入

なんかおれ間違ってる?
2020/07/04(土) 20:07:02.00ID:ZiXQ0AsVa
こうやって実際にやってみる人は素晴らしいと思う
2020/07/04(土) 20:15:53.04ID:/OqMGH1W0
>>220
matchならともかくcountifは配列に対応してない
素直にセルを引数にしてやったほうがいいのでは
2020/07/04(土) 20:17:12.12ID:JHoncA5/a
countifじゃなくてloopでfindにすればよいのでは
2020/07/04(土) 22:27:57.95ID:VMWug14q0
VBAは手段の一つ、目的はデータの加工ってわりきればすぐ終わる作業なのに
無理してVBAだけでやろうとするからいつまでもおわらない
2020/07/04(土) 23:58:08.33ID:DEQjmcqBd
>>222
ちょっと見た感じほぼ、俺と同じ感じだね。

>もしや取得時には配列で一括取得してても
シート記入時に配列使った一括記入してないんじゃ?

オイオイ、そんな素人なわけ無いだろ。

Line inputを使ったか、それより速いバイナリ読み込み+StrConv使ったかについては覚えて居ない。
まあ、速いといっても劇的に速くなる訳じゃないから、そんなことよりマルチプロセスってことでLine inputのままだったかも。

オレがやった時のデータは日付+24列のデータだった。
貼り付けは元データ込みで、元データの右に8時間平均と1日平均書いたと思うが、もしかしたら8時間平均は出力しなかったかも。

多分読み込みよりも列を増やした二次元配列にして書き込みにも利用してたと思う。
2020/07/05(日) 00:48:44.07ID:poq4gvQsd
複数のファイルの名前を編集したい

具体的には、全てのファイルのファイル名に、2020と入れたい。
2020/07/05(日) 00:51:15.79ID:C4Jqu0Op0
DOSコマンドでできる
2020/07/05(日) 01:49:00.12ID:UMxIfgnY0
>>228
ファイル名のどこに入れるの?先頭?真ん中?末尾?
231デフォルトの名無しさん (ワッチョイ bfe6-s8sF)
垢版 |
2020/07/05(日) 01:59:51.75ID:S3+IlzuQ0
>>230
その程度vbaなら自由自在でしょ
バカにしないでください
232デフォルトの名無しさん (ワッチョイ 1e8e-0gyK)
垢版 |
2020/07/05(日) 02:04:39.40ID:sCEs+yW00
>>227
お前の書き込みは、
「というか普通に考えてVBAでも無理だけどね。」
だろ

後付けで時間がとか言い出して誤魔化すんじゃねーよ
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()を呼ぶ、って可能でしょうか?
2020/07/05(日) 07:16:23.84ID:2yUokYO9d
>>232
???
日本語が理解出来ないのか?

>なんてのやったが1回限りでもVBA使わないと無理。

「やった」と書いて有るだろ。
その後に「普通に考えて」とも書いてる。

実際にやったが、普通はVBAでも無理という意味だよ。
>>222とほぼ同じで6時間かかるからマルチプロセスにしたんだからな。
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でやったらもっと酷いと思う
237234 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/05(日) 07:54:44.65ID:Mq9FuBzw0
>>234をグーグルで検索するには、どういうキーワードで検索すればいいでしょうか?
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
239234 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/05(日) 08:01:08.68ID:Mq9FuBzw0
>>228
ファイルをバイナリで読み込んで、バイナリで書き出す、
で、書き出す際に、ファイル名に"2020"&、とすればいい。
2020/07/05(日) 08:01:41.62ID:VaIdJVAp0
>>234
うん
>>237
vba 関数 呼び出し

偉いね、その姿勢があればすぐにプロフェッショナルだわ
241デフォルトの名無しさん (アウアウエー 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
242234 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/05(日) 08:05:40.42ID:Mq9FuBzw0
>>240
どうもです。
243234 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/05(日) 08:06:29.51ID:Mq9FuBzw0
>>241
どうもです。
2020/07/05(日) 11:36:58.35ID:CJtrxhlB0
>>242
呼び出しは、可読性考慮すると文頭にCall書いた方がいいよ
2020/07/05(日) 13:58:43.83ID:U1BgWcwt0
>>207
VBAでやっても6時間はかかりすぎな気がするが
マシンスペックとコード晒してみ

それ、計算式でやって再計算に1時間以上かかるのか?
当然試してるよな

マルチプロセスもどうやってやったのか気になるが
俺なら間違いなくDBにつっこんでSQLでやる

そういえばエクセルシートなりCSVなりに対してSQL投げる方法がいくつかあったけど
それは試したのか?
2020/07/05(日) 15:07:25.29ID:2yUokYO9d
>>239
ファイル名変更だから読む必要は無いだろ。
変更するだけでOK。
2020/07/05(日) 15:11:46.86ID:BTTSshKd0
>>244
おれもsubモジュール呼び出しはCallつけるようにしてる
他の言語いじったにあととかにVBAのその行みたらよくファッ!?って一瞬なるから
2020/07/05(日) 15:16:11.04ID:2yUokYO9d
>>245
SQLに投げるのは簡単だが、今回の問題でどういうSQLで出来るのかが分からんかった。
今でも思い付かんが。

計算式ではやってないな。
まあ、無駄なんで。
というか、本当にやる奴が出るとは思わんかったから、言わんかったが他にも制約は有ったんだわ。

それにしても>>236は速いな。
ちょっとおれも調べてみるか。
ちなみにこの仕事数年前なんで完全に憶えてるわけじゃない。
2020/07/05(日) 15:22:54.54ID:2yUokYO9d
マルチプロセスはExcel.Application8個(自分含めて)呼び出して、自分のブック開いて別CPUにやらせるプロシージャをApplication.OnTimeで呼び出したかSetTimerで呼び出したかだったんじゃないかな。

細かい連携しないで済むようにしてたと思う。
複雑なことはやってねえよ。
2020/07/05(日) 19:59:50.06ID:Y6miK3VP0
>>224
いろいろ試してダメだったらそうします

>>225
ありがとうございます。そうします
2020/07/05(日) 21:27:28.28ID:2yUokYO9d
>>236
う〜ん、分からん。
俺もやってみたんだが、同じような時間だった。
観測値はテキ卜一に0〜100をランダムで書き込み。
観測出来なかった値は当時の記憶を頼りに9999とした。
確か9998もあったけど変わらんだろう。

前に書いた制約というかは、1年分のファイルが50〜60個ぐらいだったということ。
つまり県ごとのファイルで観測地が多い所は複数ファイルって感じ。
だから実際は行頭に観測地名が入って、その後に何かの数値とかが幾つかあって日付、観測値という具合だった。
年ごとのファイルが完全に固定フォーマットで無かったか、俺が信用してなかったか、観測値名で検索してたと思う。
そこから365日分は連続してたと思うけど。

それでも6時間は掛からんような気がしてきた。
もっと複雑なことやってたのかなあ。

どっちにしても後だしで申し訳ない。
2020/07/05(日) 22:26:04.09ID:ys79fvH60
>>251
そもそもいつ頃の話よ
うろ覚えだけど2010あたりから計算式はめちゃめちゃ速くなってるぞ
あとでかいブックは64bit化の恩恵もあるし
2020/07/05(日) 22:29:31.22ID:2yUokYO9d
>>252
調べたらそんなに昔じゃ無かったな。
2016年だった。
2020/07/05(日) 22:43:00.48ID:R1IME3L+0
ファイル名の先頭に、2020_ を付けるぐらい、robocopy で出来ないのか?
2020/07/05(日) 22:49:17.55ID:ys79fvH60
2016ならよほど変なことをしてないと数時間とかかからんと思う
2020/07/05(日) 23:53:51.99ID:C4Jqu0Op0
2020_2020_2020_2020・・・・
2020/07/06(月) 00:43:25.66ID:Cn1gvhVh0
officeが32bitだったというオチは?
2020/07/06(月) 06:39:12.08ID:NN5xIHVpr
workbookとworksheetって何が違うか。
2020/07/06(月) 07:15:30.65ID:5mzvDM1u0
キングジムファイルと綴じられてる一覧表って感じかな
2020/07/06(月) 08:12:33.04ID:XvhlV03D0
32bitと64bitで計算スピードの差は2倍もないような
2020/07/06(月) 08:39:32.35ID:NN5xIHVpr
Activesheet.cells(1.1).Activate
Activesheet.Paste

は上手くいくのに、

Activesheet.cells(1.1).Paste

は何でダメなんですか?
2020/07/06(月) 09:18:02.55ID:Ag715axD0
>>261
.pasteは、worsheetのメンバであってrangeやcellsのメンバじゃないから、かな?
2020/07/06(月) 09:49:31.89ID:Smcv6rvz0
パラメータ Destinationがあるから
ワイはPasteSpecialのほうが好き
2020/07/06(月) 12:08:40.63ID:0NryXgvDd
>>263
普通はCopyのDestinationでやるからな。
Paste使うのはRange以外のコピーの時かな。
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

の方が処理が早い傾向がありますが、そういうものですか?
2020/07/06(月) 19:08:39.04ID:tFUllOPh0
>>254
出来ないよ????
robocopy はファイル名の変更はできない。
robocopy したあと move するしかない。

…あ。こいつWSHスレを荒らしてたrubyおじさんじゃんww
2020/07/06(月) 19:10:33.89ID:tFUllOPh0
てか、もうRubyは徒花だったな。
人気もダダ下がりだし。
2020/07/06(月) 20:45:52.99ID:0NryXgvDd
>>266
よく分からんが、そもそも何でRubyが出て来るんだ?
VBAだってNameステートメントで一発なのに。
2020/07/06(月) 20:59:38.60ID:aGu/2bZb0
>>265
普通にかんがえて、前者のほうがループのオーバーヘッド分早いはずだが
その傾向ってのはどうやって調べたのか
2020/07/06(月) 21:12:06.08ID:tFUllOPh0
>>268
どこでもかしこでもRubyで書いて押し付けてきて、「出来だよ!」っていうオジサンがいるのよ。
WSHスレでは「Rubyおじさん」として有名だった。
が、自分よりスキルの上な奴がコードをうしたら黙り込む。
こんなところにまで出張いてるとはね…。

無視推奨。Rubyはオワコンだし。
2020/07/06(月) 21:13:16.26ID:K1goXTAAa
じゃあVBAはお爺ちゃんだろ
2020/07/06(月) 21:17:13.18ID:tFUllOPh0
>>271
VBAは「頼れるジジイ」だろ。何言ってんの?
2020/07/06(月) 21:29:12.52ID:XvhlV03D0
>>265
そんなのは処理による
コードが長くなったりループの中で扱うデータが増えるとメモリキャッシュがあふれて遅くなる可能性が高くなる
2020/07/06(月) 22:27:45.01ID:33E9zFJO0
Rubyの話がしたければRubyのスレ行けばいいのにね
2020/07/07(火) 12:27:17.68ID:mk51G87Dd
>>270
いや、それはRubyが優位と言いたいが為だろ。
全然優位じゃない所に出てくるのが分からん。
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
2020/07/07(火) 20:25:40.74ID:BPFgnJg70
なんでVBAでやるの?
2020/07/07(火) 20:27:13.84ID:z4TbLErcM
VBAスレだから
280犬丸 ◆MRCYWQz4rc (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 20:31:41.96ID:2cf+0s2v0
>>278
和音の構成音(ドレミ・・・)を1つづつセルに入れられるから。
2020/07/07(火) 20:33:47.85ID:BPFgnJg70
なんでdominoとか使わないの?
282デフォルトの名無しさん (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 20:34:49.08ID:2cf+0s2v0
あと、PCにインストールされてる開発系はexcelだけだから。
283277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 20:41:28.24ID:2cf+0s2v0
つか、改変させたいmidiファイルが300個位あって、それの欲しいデータのexcelファイルへの読み込みはもう終わったわけ。
あとは、そのデータをちょい改変して、同様な300個のmidiファイルを吐き出すだけなんですよ。
284277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 20:42:49.00ID:2cf+0s2v0
だから、excelでバイナルファイルを作りたいのです。
2020/07/07(火) 21:00:27.95ID:yByKJQAn0
読み込めたなら反対をやればいいんじゃないの
2020/07/07(火) 21:05:07.15ID:CAdbpiIn0
>>283
著作権的にどうなの?
287277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 21:10:37.49ID:2cf+0s2v0
>>285
日本語だってそうだろ。
読むのは簡単。 書くのは大変なんだよ。

>>286
ネットで買った和音だけの簡単なデータで改変したデータを自分だけで使うぶんには問題ありません。
2020/07/07(火) 21:13:27.88ID:BPFgnJg70
じゃあそうすればいいじゃない?

所詮16進数の文字の羅列(Byteの配列とかにはさすがに出来てるんやろ?)なんだから
最終的には好きに料理してファイルに吐き出せばいい
ただ、1つのセルにバイナリなんて入れたら手作業で編集なんてしずらくてしょうがないけどな
あとセルの文字数上限もあるだろうし
midiの規格書読んだことあるのかしらんが、よくチャンクとかバイナリいじって編集しようと思うな
2020/07/07(火) 21:13:57.80ID:CAdbpiIn0
>>287
ならmidiの編集ソフトが使った方がいいね
290277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 21:14:00.67ID:2cf+0s2v0
>>286
そもそも観賞するためのmidiデータではなく音楽制作に使うツールとしてのmidiデータなんだよね。
2020/07/07(火) 21:14:32.40ID:/HMzap4UM
>>282
C#やVB.NETもあるけど?w
292277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 21:22:41.71ID:2cf+0s2v0
>>288
> midiの規格書読んだことあるのかしらんが、よくチャンクとかバイナリいじって編集しようと思うな
基礎的な部分は把握してます。

> 所詮16進数の文字の羅列(Byteの配列とかにはさすがに出来てるんやろ?)
これがわからないんです。たとえば、4D 54 68 64という16進のデータをexcelの1つのセルに書き込む方法を教えて欲しいのです。
293277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 21:25:44.85ID:2cf+0s2v0
で、excelの"C3"に、4D 54 68 64を書き込んで>>277のソースを動かして試してみたいんです。
2020/07/07(火) 21:26:04.88ID:CAdbpiIn0
これなんか良いんじゃね
https://openmidiproject.osdn.jp/Sekaiju.html
2020/07/07(火) 21:29:51.89ID:CAdbpiIn0
midiの規格ってそんな簡単じゃないから素人が扱っても音が切れたりトラックがずれたりして
結局使えないだろ
2020/07/07(火) 21:32:34.47ID:7cSgkxva0
ExcelのRange#valueにバイト列なんか入るわけないんだから自分がわかりやすいように文字列か数値に勝手に変換して勝手に入れろとしか言えない
2020/07/07(火) 21:34:29.92ID:MaHOmhaOM
Excelでmidiデータを取り扱うなんて常人の発想ではない
たぶんあなた以外に誰も方法はわからないから頑張ってその道の第一人者になって欲しい
2020/07/07(火) 21:35:25.31ID:BPFgnJg70
>>292
セルに入れられるのはあくまで文字列ってこと理解してないの?

その例なら「Byte(0):77 Byte(1):84〜」とかいう配列から「4D 54 68 64」という文字列にしなければセルには書き込めない
Byteはそれぞれの数値が入ってるだろうけど、hexかなんかで16進数にしたうえで(編集上必要あるか知らんけど)
join(array, " ")かなんかで1つの文字列にする

くっそ編集しずらいだろうけどな
299デフォルトの名無しさん (ワッチョイ 8ab5-5DWS)
垢版 |
2020/07/07(火) 21:44:56.92ID:tZSrRerM0
前スレのテキストフルスキャンの発想とコード提示してくれた人
改めて言わせて貰う
職場の一大イベントを乗り切ったわこれで
300デフォルトの名無しさん (ワッチョイ 8ab5-5DWS)
垢版 |
2020/07/07(火) 21:46:02.99ID:tZSrRerM0
改めて多大なるお礼を言わせて貰うが抜けてた

これのおかげですべての可能性が広がったわ
301277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 22:23:53.24ID:2cf+0s2v0
では、すみません。 >>277の質問はなしにして、↓の質問をお願いします。

1、変数に「4D 54 68 64」のバイナリデータを代入するソース
2、中身は「4D 54 68 64」だけのファイル
3、ファイル名は5ch.bin
こんなファイルを作るにはどのようなソースを書けばよいでしょうか?
302277 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 22:29:17.16ID:2cf+0s2v0
>>228
allrenameというフリーソフトを使えばいいのじゃ。
2020/07/07(火) 22:32:51.69ID:CAdbpiIn0
>>301
バイナリ編集のソフト使えばいいんじゃね
304301 (ワッチョイ 8a01-c9XW)
垢版 |
2020/07/07(火) 22:42:26.54ID:2cf+0s2v0
>>303
すみません。 「VBAを使って」でした。
305デフォルトの名無しさん (ワッチョイ 0302-WfHi)
垢版 |
2020/07/07(火) 22:43:37.27ID:O/UE8zUS0
もはやExcelを使うことが目的化してる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況