!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
ExcelのVBAに関する質問スレ
コード書き込みや作成依頼もOK
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
Excel VBA 質問スレ Part76
https://mevius.5ch.net/test/read.cgi/tech/1651339421/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
探検
Excel VBA 質問スレ Part77
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (TW 0H42-j7SA)
2022/07/17(日) 07:07:35.59ID:tS4zKdphH340デフォルトの名無しさん (ワッチョイ 692f-Htvk)
2022/08/12(金) 12:52:14.02ID:kbIhrpmL0341デフォルトの名無しさん (ワッチョイ 91da-erdL)
2022/08/12(金) 16:32:51.36ID:BEh6dSX60 お前ら禿好きだな
342デフォルトの名無しさん (ワッチョイ 5374-7aqZ)
2022/08/12(金) 16:38:58.11ID:eSjTAJcc0 ↑この人ハーゲマンです
343デフォルトの名無しさん (ワッチョイ 91da-erdL)
2022/08/12(金) 17:59:10.79ID:BEh6dSX60 いきなし禿げたんよ。
去年の夏位まではふさふさだった
去年の夏位まではふさふさだった
344デフォルトの名無しさん (ワッチョイ 0101-9Xv3)
2022/08/12(金) 20:16:41.08ID:ijOecH2p0 それはコロナだから治療行けよ。
345デフォルトの名無しさん (ワッチョイ 895f-azwe)
2022/08/12(金) 21:06:52.17ID:rQBVWxEE0 Dim Eight As Typhoon
Set Eight As Typhoon
Debug.Print Eight.HPa
Set Eight As Typhoon
Debug.Print Eight.HPa
346デフォルトの名無しさん (オッペケ Sr5d-4bUZ)
2022/08/12(金) 21:35:36.13ID:JWVBEjPKr 質問です
エクセルでvba書くとハゲるというのは本当ですか?
それともハゲじゃないとまともなコードにならないということでしょうか?
エクセルでvba書くとハゲるというのは本当ですか?
それともハゲじゃないとまともなコードにならないということでしょうか?
347デフォルトの名無しさん (ワッチョイ dd5f-voQn)
2022/08/13(土) 00:36:53.33ID:7+qtu9p80 >>345
Set Eight = New Typhoon
Set Eight = New Typhoon
348デフォルトの名無しさん (ワッチョイ 45ce-5Ix7)
2022/08/13(土) 00:54:21.19ID:C3GQNRB30 Print Eight.Name
Mary
Mary
349デフォルトの名無しさん (スププ Sd62-6z5t)
2022/08/13(土) 07:49:57.82ID:Q44FuubAd >>346
ハゲる→外に出られなくなる→VBAしか無い人生に陥る
ハゲる→外に出られなくなる→VBAしか無い人生に陥る
350デフォルトの名無しさん (ワッチョイ e1da-5+Zi)
2022/08/13(土) 18:00:34.01ID:+/onKVXv0 禿が気になるなら頭ツルッツルにするという構想は無いのかね?
351デフォルトの名無しさん (スフッ Sd62-6z5t)
2022/08/13(土) 18:44:02.54ID:qT7WXGgOd Dim Hair As Object
Set Hair = Nothing
Set Hair = Nothing
352デフォルトの名無しさん (ワッチョイ e1da-5+Zi)
2022/08/13(土) 21:29:48.82ID:+/onKVXv0 >>351
座布団100枚
座布団100枚
353デフォルトの名無しさん (ワッチョイ 2e8f-57ew)
2022/08/13(土) 22:55:44.03ID:ZiFcsOVE0 >>346
こら!良い大人ならスキンヘッドと言いなさい!
こら!良い大人ならスキンヘッドと言いなさい!
354デフォルトの名無しさん (ワッチョイ d2bd-nhkz)
2022/08/14(日) 09:47:43.88ID:1U9rY3C10 スキンヘッドが似合う顔ならスキンヘッドにしてるんですよ・・・
355デフォルトの名無しさん (アウアウウー Saa5-oUG4)
2022/08/14(日) 11:14:09.47ID:VI2zLni0a ezoe職務質問されたってよ
356デフォルトの名無しさん (ワッチョイ 41e6-U0U7)
2022/08/14(日) 13:17:19.86ID:RtZKjyzz0 >>355
QZ は逮捕・拘留11日を食らったってよ
QZ は逮捕・拘留11日を食らったってよ
357デフォルトの名無しさん (ワッチョイ 4dda-xxo+)
2022/08/14(日) 16:16:37.77ID:L75yFRnI0 スキンヘッドは
メガネがポイントだと思う。
閑話休題。
次の話者に期待
メガネがポイントだと思う。
閑話休題。
次の話者に期待
358デフォルトの名無しさん (ワッチョイ e274-Jrkb)
2022/08/14(日) 16:36:03.46ID:LT2TaV3B0 皮頭よりはハゲと言われたほうが人権を尊重してるだろ
359デフォルトの名無しさん (ワッチョイ 6eda-O3lh)
2022/08/14(日) 19:46:54.17ID:mUrr83gX0 >>349
→VBAの質問スレに書きこむようになる
→VBAの質問スレに書きこむようになる
360デフォルトの名無しさん (ワッチョイ e274-Jrkb)
2022/08/14(日) 23:12:05.82ID:LT2TaV3B0 きみたちハーゲマンに質問なのですが
VBAの配列でJavascriptのようにpushやpopを使いたいときってどうしてます?
わざわざredim使って要素数を変えるのはそれが頻繁になるときは使いづらいなと思うし。
VBAの配列でJavascriptのようにpushやpopを使いたいときってどうしてます?
わざわざredim使って要素数を変えるのはそれが頻繁になるときは使いづらいなと思うし。
361デフォルトの名無しさん (ワッチョイ 6eda-5Ix7)
2022/08/14(日) 23:52:33.60ID:mUrr83gX0 >>360
最初の配列はそのままで添え字を管理
最初の配列はそのままで添え字を管理
362デフォルトの名無しさん (ワッチョイ e1da-5+Zi)
2022/08/15(月) 00:13:18.77ID:WD7exLpg0 ツルピカかつ、不精ヒゲだから女さんなんて絶対に寄り付かない。
363310 (ワッチョイ 4201-8lLW)
2022/08/15(月) 05:37:50.20ID:zxOEKBbO0 >>360
VBA で残念に思う所の一つやね
サイズの上限が決められるならその上限で確保してサイズは別途管理
上限が決められない時はReDimでちまちま管理してる
あとReDimでサイズを0にできないのも地味に辛い
VBA で残念に思う所の一つやね
サイズの上限が決められるならその上限で確保してサイズは別途管理
上限が決められない時はReDimでちまちま管理してる
あとReDimでサイズを0にできないのも地味に辛い
364デフォルトの名無しさん (ワッチョイ e274-Jrkb)
2022/08/15(月) 06:56:28.24ID:OUaqH/oW0365デフォルトの名無しさん (ワッチョイ 6eda-Pw8Y)
2022/08/15(月) 07:26:27.37ID:3rPnXTV50366デフォルトの名無しさん (ワッチョイ c224-Iq4y)
2022/08/15(月) 08:25:48.51ID:7kbqjBHA0 >>364
他の言語でもスタックやキューは長さの決まった配列だよ
そこへオブジェクトを出し入れするときに端のポインタを動かすだけ
長さが足りなくなったら長さ2倍の配列を新しく定義してそっちへオブジェクトを引っ越し、オブジェクトの数が長さの25%を下回るようになったら長さ半分の配列を作り直してそっちへ引っ越し
他の言語でもスタックやキューは長さの決まった配列だよ
そこへオブジェクトを出し入れするときに端のポインタを動かすだけ
長さが足りなくなったら長さ2倍の配列を新しく定義してそっちへオブジェクトを引っ越し、オブジェクトの数が長さの25%を下回るようになったら長さ半分の配列を作り直してそっちへ引っ越し
367310 (ワッチョイ 4201-8lLW)
2022/08/15(月) 08:28:07.85ID:zxOEKBbO0368デフォルトの名無しさん (ワッチョイ 6eda-5Ix7)
2022/08/15(月) 12:57:14.28ID:3rPnXTV50 EXCELのシートが配列みたいなもんだし
370デフォルトの名無しさん (ワッチョイ e179-ETcs)
2022/08/15(月) 16:10:48.09ID:Z5BB7x+B0 VB(A)の配列でpopが必要になる場面ってあんまないなあ
不要になったらemptyぶちこむだけだし
不要になったらemptyぶちこむだけだし
371デフォルトの名無しさん (ワッチョイ c6da-hvLj)
2022/08/15(月) 18:21:13.35ID:u0LihC760372デフォルトの名無しさん (ワッチョイ c6da-hvLj)
2022/08/15(月) 18:23:08.68ID:u0LihC760 >>371
ああスマン。なんかへんな一言張り付いた。
ああスマン。なんかへんな一言張り付いた。
373デフォルトの名無しさん (ワッチョイ 424f-gduT)
2022/08/15(月) 19:15:38.92ID:HvBHLkJg0 Dictionaryでいいと思う。
キーに連番、スタックポインタ代わりに変数一個用意してやって、使い終わったらremove で消して。
キーに連番、スタックポインタ代わりに変数一個用意してやって、使い終わったらremove で消して。
374デフォルトの名無しさん (ワッチョイ 6eda-5Ix7)
2022/08/15(月) 19:36:11.84ID:3rPnXTV50 やり方は色々あるのにVBAが使いにくいとか言い出す初心者w
375デフォルトの名無しさん (ワッチョイ 4d2f-O3lh)
2022/08/15(月) 19:39:31.51ID:zxCNByvE0 だがしかしVBAにDictionaryはないのだよ
WSHはいつまでサポートされるかなぁ
VBAより短い気がしてきた
まあ俺ならどうしてもキューかスタックほしいなら、.NET Frameworkのやつ使うかな
WSHはいつまでサポートされるかなぁ
VBAより短い気がしてきた
まあ俺ならどうしてもキューかスタックほしいなら、.NET Frameworkのやつ使うかな
376デフォルトの名無しさん (ワッチョイ 6eda-5Ix7)
2022/08/15(月) 19:54:05.83ID:3rPnXTV50 だからVBA使うのやめなよ
377デフォルトの名無しさん (ワッチョイ 4535-/BVm)
2022/08/15(月) 20:17:32.58ID:kNyRr/sv0 VBAでDictionary使えるでしょ
378デフォルトの名無しさん (ワッチョイ c6da-hvLj)
2022/08/15(月) 20:25:53.14ID:u0LihC760 ああ、なるほど。いつ使えなくなるとも知れないとなれば先々を考えて使わないほうがいいかもね。たしかに使い方も特殊だし。>dictionary
まぁ、それなら捨てsheet作って貼り付けるかな。2次元までなら。
そのかわり処理速度は格段に落ちる可能性はあるけど、待ってりゃいいならそれもアリか。
まぁ、それなら捨てsheet作って貼り付けるかな。2次元までなら。
そのかわり処理速度は格段に落ちる可能性はあるけど、待ってりゃいいならそれもアリか。
379デフォルトの名無しさん (ワッチョイ 41e6-U0U7)
2022/08/15(月) 20:28:32.11ID:Mg/eEpn60 それって findfirst/findnext 一発で済む問題なのでは?いちいちマクロで書くのもウザったいですよね‥‥
380デフォルトの名無しさん (ワッチョイ 6eda-5Ix7)
2022/08/15(月) 20:41:37.63ID:3rPnXTV50 使いにくいとか面倒とか愚痴るくらいならEXCEL使うのやめればいいのに
381デフォルトの名無しさん (ワッチョイ e274-Jrkb)
2022/08/15(月) 21:05:11.95ID:OUaqH/oW0 >>371
Dictionaryはとおの昔から使っておったのじゃよ。
しかし使い続けているうちにふと頭をさわるとなんとハゲてしまったのじゃ。
それは困ると思ってDictionaryに変わるいい方法を探求しておるのじゃ。
Dictionaryはとおの昔から使っておったのじゃよ。
しかし使い続けているうちにふと頭をさわるとなんとハゲてしまったのじゃ。
それは困ると思ってDictionaryに変わるいい方法を探求しておるのじゃ。
382デフォルトの名無しさん (ワッチョイ c6da-hvLj)
2022/08/15(月) 21:40:01.71ID:u0LihC760 >>381
なんだ、ただふざけてるだけか。。。
なんだ、ただふざけてるだけか。。。
383デフォルトの名無しさん (スッップ Sd62-6z5t)
2022/08/15(月) 22:39:37.83ID:fsND5nPed そんなハゲ頭に免じてArrayListを進ぜよう
384デフォルトの名無しさん (ワッチョイ 424f-gduT)
2022/08/15(月) 22:52:26.96ID:HvBHLkJg0 DictionaryがイヤならCollection使えばいいと思うけど。
まぁ別に普通に配列でもいいんだけどさ。
多少凝った作りにしたって関数化しとけばいい訳だし。
まぁ別に普通に配列でもいいんだけどさ。
多少凝った作りにしたって関数化しとけばいい訳だし。
385デフォルトの名無しさん (スッップ Sd62-6z5t)
2022/08/16(火) 04:43:22.32ID:Z2Qcd4DId >>384
流石に無知すぎるから少し黙った方がいいよ
流石に無知すぎるから少し黙った方がいいよ
386310 (ワッチョイ 4201-8lLW)
2022/08/16(火) 05:59:23.35ID:CNdrdYLw0 Collection に Exists メソッドがあれば...
387デフォルトの名無しさん (ワッチョイ 6eda-5Ix7)
2022/08/16(火) 11:11:29.27ID:09rAK4Ti0 何作ってんだよ
388デフォルトの名無しさん (ワッチョイ 424f-gduT)
2022/08/16(火) 12:23:01.42ID:2L6vp4NY0389デフォルトの名無しさん (ワッチョイ e1da-5+Zi)
2022/08/16(火) 16:58:27.92ID:tG1qlgnq0 あまりマウントの取り合いは止めようぜ
意見交換の場なんだから
意見交換の場なんだから
390デフォルトの名無しさん (ワッチョイ 6eda-5Ix7)
2022/08/16(火) 17:40:43.11ID:09rAK4Ti0 どちらかというとけなし合いだな
391デフォルトの名無しさん (ブーイモ MM6d-/XJ6)
2022/08/16(火) 18:00:08.72ID:0h33t1VnM ここにいると神になった気分になるな
お前らの見苦しさに対してもなんだか優しくなれそう
お前らの見苦しさに対してもなんだか優しくなれそう
392デフォルトの名無しさん (ワッチョイ e1da-5+Zi)
2022/08/16(火) 18:20:47.96ID:tG1qlgnq0 昔は違ったんよ
いつからか荒れやすいスレになった
いつからか荒れやすいスレになった
393デフォルトの名無しさん (ワッチョイ e274-Jrkb)
2022/08/16(火) 20:19:48.02ID:NUsqsy200394デフォルトの名無しさん (ワッチョイ e1da-5+Zi)
2022/08/16(火) 20:50:53.76ID:tG1qlgnq0 毛という毛全部剃っちゃえ!
395デフォルトの名無しさん (ワッチョイ e274-Jrkb)
2022/08/16(火) 21:16:40.24ID:NUsqsy200396デフォルトの名無しさん (ワッチョイ e1da-5+Zi)
2022/08/16(火) 21:54:28.52ID:tG1qlgnq0 え?
別にいいじゃん、アンタ元から禿なんだから。
別にいいじゃん、アンタ元から禿なんだから。
397デフォルトの名無しさん (アウアウウー Saa5-Pw8Y)
2022/08/17(水) 01:45:03.16ID:d962r+SMa ソルのはムダ毛だけにしとけ
398デフォルトの名無しさん (スッップ Sd62-BYM4)
2022/08/17(水) 01:57:01.99ID:sNWv67oad 頭髪は生えないのに髭は生える
399デフォルトの名無しさん (ワッチョイ e274-Jrkb)
2022/08/17(水) 04:59:55.38ID:EILeizBb0400デフォルトの名無しさん (ワッチョイ 4dda-xxo+)
2022/08/17(水) 07:35:41.89ID:hasTYsFP0 頭髪はハゲても、耳毛は濃くなる
401デフォルトの名無しさん (ワッチョイ e1da-5+Zi)
2022/08/17(水) 11:39:32.10ID:Ork7WWB+0 禿ではないのだけど、40歳にして髪は真っ白よ。
402デフォルトの名無しさん (ワッチョイ 6eda-5Ix7)
2022/08/17(水) 12:34:16.41ID:V9XsbrNu0 好きな色に染めようぜ
403デフォルトの名無しさん (オッペケ Srf1-Uo2u)
2022/08/17(水) 12:58:33.86ID:PQdbwjDzr Excelらしく緑だな
404デフォルトの名無しさん (ササクッテロ Spf1-gduT)
2022/08/18(木) 12:18:45.39ID:yPHO1+kSp なんという体たらく
もうハゲはこのスレ出入り禁止でいいな
もうハゲはこのスレ出入り禁止でいいな
405デフォルトの名無しさん (ワッチョイ fdb7-laJE)
2022/08/18(木) 13:11:18.15ID:EfwMa2qS0 2つの表があって、表Aと表Bとして
表の作りは二つとも同じで、
コードと数字を持ってます。
二つの表のコードが一致してる場合は
コード A B
101 50 60
102 40 100
103 30
104 50
といった感じで片方にしか存在しない場合は片方だけの行を追加して行くってvbaを作りたいんですが、何かいい案はありますか?
AとBの表で数字の比較をしたいです
for nextでやろうとしてますがうまくいいやり方が見つからずです
表の作りは二つとも同じで、
コードと数字を持ってます。
二つの表のコードが一致してる場合は
コード A B
101 50 60
102 40 100
103 30
104 50
といった感じで片方にしか存在しない場合は片方だけの行を追加して行くってvbaを作りたいんですが、何かいい案はありますか?
AとBの表で数字の比較をしたいです
for nextでやろうとしてますがうまくいいやり方が見つからずです
406デフォルトの名無しさん (ブーイモ MM85-Hx7L)
2022/08/18(木) 13:24:26.87ID:EMP5KmCeM まずVBAを忘れます
SQLで FULL OUTER JOIN します
(゚д゚)
SQLで FULL OUTER JOIN します
(゚д゚)
407デフォルトの名無しさん (ワッチョイ 468c-hYSv)
2022/08/18(木) 14:31:25.04ID:qheAbwQK0 >>405
テーブルのリレーションシップを設定したらいいんじゃないかな
テーブルのリレーションシップを設定したらいいんじゃないかな
408デフォルトの名無しさん (アウアウウー Saa5-dwW8)
2022/08/18(木) 14:35:35.98ID:DWDOTpPia 例えば以下の様なデータがあるとします
開始~終了:消費量
1月1日 0時~1月1日16時:500
1月1日16時~1月2日10時:1000
1月2日10時~1月5日 0時:800
1月5日 0時~1月5日0時:300
1月5日0時~1月6日0時:2500
1月6日0時~1月7日12時:1200
このように時間の区切りがバラバラ(かつ日跨ぎや0分間もある)のデータに対して、1月1日、2日、3日にそれぞれ合計いくらかを出したいです
なお、例えば20時~翌6時で1000の様な場合は4h:6h=400:600として計上したいです
どう計算するか方針すら思い浮かばないのですが何かアイディアありましたら教えてください
開始~終了:消費量
1月1日 0時~1月1日16時:500
1月1日16時~1月2日10時:1000
1月2日10時~1月5日 0時:800
1月5日 0時~1月5日0時:300
1月5日0時~1月6日0時:2500
1月6日0時~1月7日12時:1200
このように時間の区切りがバラバラ(かつ日跨ぎや0分間もある)のデータに対して、1月1日、2日、3日にそれぞれ合計いくらかを出したいです
なお、例えば20時~翌6時で1000の様な場合は4h:6h=400:600として計上したいです
どう計算するか方針すら思い浮かばないのですが何かアイディアありましたら教えてください
409デフォルトの名無しさん (ワッチョイ 42d8-joTH)
2022/08/18(木) 15:01:03.74ID:JMDQexcx0 vlookupでできない?
普通にforループでも難しいことなさそうだけど、どんなコード書いたの?
普通にforループでも難しいことなさそうだけど、どんなコード書いたの?
410デフォルトの名無しさん (ワッチョイ 42d8-joTH)
2022/08/18(木) 15:04:36.75ID:JMDQexcx0411デフォルトの名無しさん (ブーイモ MM85-Ufop)
2022/08/18(木) 15:14:31.63ID:EMP5KmCeM >>408
まず問題を分割しよう
まず(step1)日別にレコードを分割し、(step2)それを日付でグループ化して合計を出すと考えればいい
step2は典型的なグループ化と小計なんで楽勝として、step1はちょっと面倒だから更に分割しようか
例えば、入力として一行の内容を渡すと、日別分割されたレコードの配列を返す関数を作って、その結果を結合すればいいだろう
まず問題を分割しよう
まず(step1)日別にレコードを分割し、(step2)それを日付でグループ化して合計を出すと考えればいい
step2は典型的なグループ化と小計なんで楽勝として、step1はちょっと面倒だから更に分割しようか
例えば、入力として一行の内容を渡すと、日別分割されたレコードの配列を返す関数を作って、その結果を結合すればいいだろう
412デフォルトの名無しさん (スッップ Sd62-9bk+)
2022/08/18(木) 15:53:00.45ID:XgHMEnCRd >>405
深く考えなくていいなら
①2つの表(シート)をそれぞれ参照して作業用のシートAを作る
コード シート 値
101 A 50
102 A 40
・・・
101 B 60
102 B 100
②シートAをソートする
③シートAの内容を読み込んで質問にあるようなシートBを作る
深く考えなくていいなら
①2つの表(シート)をそれぞれ参照して作業用のシートAを作る
コード シート 値
101 A 50
102 A 40
・・・
101 B 60
102 B 100
②シートAをソートする
③シートAの内容を読み込んで質問にあるようなシートBを作る
413デフォルトの名無しさん (ワッチョイ fdb7-laJE)
2022/08/18(木) 16:12:23.70ID:EfwMa2qS0 できた!
二重ループでできました。
二重ループでできました。
414411 (ブーイモ MM85-Ufop)
2022/08/18(木) 16:21:20.45ID:fCi7ElhaM 日別分割関数について補足しておこう
この関数を更に分割すれば、下記のようになるだろう
(1) 開始日時と終了日時の間の日付を全て取得する
(2) 終了日時と開始日時の差を時間単位で求め、結果をHとする
(3) (1) で取得したそれぞれの日付(dとする)について、下記を実施する
(3.1) 開始日時と終了日時の間において、日付dに属する時間が何時間あるかを計算し、結果をhとする
(3.2) 消費量*h/Hを計算し、結果をxとする
(3.3) 日付dと消費量xのペアを分割結果の1レコードとする
ここまで分ければ簡単だろう。もしまだ難しければこのように適宜分割するとよい。
この関数を更に分割すれば、下記のようになるだろう
(1) 開始日時と終了日時の間の日付を全て取得する
(2) 終了日時と開始日時の差を時間単位で求め、結果をHとする
(3) (1) で取得したそれぞれの日付(dとする)について、下記を実施する
(3.1) 開始日時と終了日時の間において、日付dに属する時間が何時間あるかを計算し、結果をhとする
(3.2) 消費量*h/Hを計算し、結果をxとする
(3.3) 日付dと消費量xのペアを分割結果の1レコードとする
ここまで分ければ簡単だろう。もしまだ難しければこのように適宜分割するとよい。
415デフォルトの名無しさん (ワッチョイ 9901-laJE)
2022/08/18(木) 16:23:33.57ID:MNMwm62Z0 初歩的な質問なんだけど、上下一致してる場合だけ転記して行くという場合
1行目は例外として省く処理いれて
cells(r-1,1)=cells(r,1)とかってやってくと、不一致のものが現れた時に一致してた行の最初の値が転記できなくなるんだけどどうしたらいい?
100
100
101
101
102
とかって並びの時に、100の一番上が転記されないとか
102とかも転記されない
上下比較の時の最適解の比較方法を知りたい
1行目は例外として省く処理いれて
cells(r-1,1)=cells(r,1)とかってやってくと、不一致のものが現れた時に一致してた行の最初の値が転記できなくなるんだけどどうしたらいい?
100
100
101
101
102
とかって並びの時に、100の一番上が転記されないとか
102とかも転記されない
上下比較の時の最適解の比較方法を知りたい
416デフォルトの名無しさん (ワッチョイ 4201-8lLW)
2022/08/18(木) 16:23:56.43ID:X/mZUHYK0 >>405
結構面倒、前提条件として「表A, 表Bのコードは各々ソートされてる」かつ「表A, 表Bのコードは各々の表内で重複してない」のであれば...
Type T
S As WorkSheet: L As Long: R As Long: C As Long: D As Long: F As Boolean
End Type
Dim TA As T, TB As T
Set TA.S = WorkSheets("表A"): Set TB.S = WorkSheets("表B")
TA.L = TA.S.Cells(TA.S.Rows.Count, 1).End(xlUp).Row: TB.L = TB.S.Cells(TB.S.Rows.Count, 1).End(xlUp).Row
TA.R = 1: TB.R = 1
TA.F = False: TB.F = False
Dim S As WorkSheet: Set S = WorkSheets("結果")
Dim R As Long: R = 1
Do
G TA: G TB
If TA.F And TB.F And TA.C = TB.C Then
S.Cells(R, "A").Value = TA.C: S.Cells(R, "B").Value = TA.D: S.Cells(R, "C").Value = TB.D: TA.F = False: TB.F = False
ElseIf (TA.F And TB.F And TA.C < TB.C) Or (TA.F And Not TB.F) Then
S.Cells(R, "A").Value = TA.C: S.Cells(R, "B").Value = TA.D: TA.F = False
ElseIf (TA.F And TB.F And TB.C < TA.C) Or (Not TA.F And TB.F) Then
S.Cells(R, "A").Value = TB.C: S.Cells(R, "C").Value = TB.D: TB.F = False
Else
Exit Do
End If
R= R + 1
Loop
Private Sub G(T As T)
If Not T.F And T.R <= T.L Then
T.C = T.S.Cells(T.R, "A").Value: T.D = T.S.Cells(T.R, "B").Value: T.F = True: T.R = T.R + 1
End If
End Sub
結構面倒、前提条件として「表A, 表Bのコードは各々ソートされてる」かつ「表A, 表Bのコードは各々の表内で重複してない」のであれば...
Type T
S As WorkSheet: L As Long: R As Long: C As Long: D As Long: F As Boolean
End Type
Dim TA As T, TB As T
Set TA.S = WorkSheets("表A"): Set TB.S = WorkSheets("表B")
TA.L = TA.S.Cells(TA.S.Rows.Count, 1).End(xlUp).Row: TB.L = TB.S.Cells(TB.S.Rows.Count, 1).End(xlUp).Row
TA.R = 1: TB.R = 1
TA.F = False: TB.F = False
Dim S As WorkSheet: Set S = WorkSheets("結果")
Dim R As Long: R = 1
Do
G TA: G TB
If TA.F And TB.F And TA.C = TB.C Then
S.Cells(R, "A").Value = TA.C: S.Cells(R, "B").Value = TA.D: S.Cells(R, "C").Value = TB.D: TA.F = False: TB.F = False
ElseIf (TA.F And TB.F And TA.C < TB.C) Or (TA.F And Not TB.F) Then
S.Cells(R, "A").Value = TA.C: S.Cells(R, "B").Value = TA.D: TA.F = False
ElseIf (TA.F And TB.F And TB.C < TA.C) Or (Not TA.F And TB.F) Then
S.Cells(R, "A").Value = TB.C: S.Cells(R, "C").Value = TB.D: TB.F = False
Else
Exit Do
End If
R= R + 1
Loop
Private Sub G(T As T)
If Not T.F And T.R <= T.L Then
T.C = T.S.Cells(T.R, "A").Value: T.D = T.S.Cells(T.R, "B").Value: T.F = True: T.R = T.R + 1
End If
End Sub
417デフォルトの名無しさん (ワッチョイ fdb7-laJE)
2022/08/18(木) 16:34:05.48ID:EfwMa2qS0 >>416
ありがとぅざいます!
そうなんです
考え出したらこれかなり面倒だなと思って、、
同じような発想かもしれないですが
外のループはA表のコード番号の縦列の値を固定して、
内側ループでB表を縦にコードが一致するまで検知して
一致した場合フラグを立てて、一致したコードの時は一致してるコードの隣に値を転記。
内側ループを抜けた時点でフラグが立っていない場合はBにしか存在しない値なので、A表の最終行以降に転記
って考え方でいけました!
ありがとぅざいます!
そうなんです
考え出したらこれかなり面倒だなと思って、、
同じような発想かもしれないですが
外のループはA表のコード番号の縦列の値を固定して、
内側ループでB表を縦にコードが一致するまで検知して
一致した場合フラグを立てて、一致したコードの時は一致してるコードの隣に値を転記。
内側ループを抜けた時点でフラグが立っていない場合はBにしか存在しない値なので、A表の最終行以降に転記
って考え方でいけました!
418デフォルトの名無しさん (ワッチョイ fdb7-laJE)
2022/08/18(木) 16:37:32.42ID:EfwMa2qS0 あ.A表に転記ではなくてC表ですね
419デフォルトの名無しさん (アウアウウー Saa5-dwW8)
2022/08/18(木) 18:49:57.27ID:AeknNWbaa >>411,414
ありがとうございます、そのヒント元に自己解決できました
1. 対象となる期間を配列に格納
2. データを1つずつ0:00で分解、按分は都度[その日の時間/全体の時間]で実施
3. 配列内の一致する日付に割振り
4. 2-3ループ
ありがとうございます、そのヒント元に自己解決できました
1. 対象となる期間を配列に格納
2. データを1つずつ0:00で分解、按分は都度[その日の時間/全体の時間]で実施
3. 配列内の一致する日付に割振り
4. 2-3ループ
420デフォルトの名無しさん (ワッチョイ 42d8-joTH)
2022/08/18(木) 20:46:21.25ID:JMDQexcx0 >>415
102は一致する相手がいないけど、転記される必要があるのかな?
ぱっと思いつくのは
ポインタをrとsの2つを用意してr=1, s=1から始める
1. Cells(s, 1) == Cells(r, 1) の間だけ s を進める。
2. Cells(s, 1) の値が変わったところで
a) s - r > 1 なら Cells(r, 1) を転記しながら s に追いつくまで r を進める
b) s - r == 1 なら転機せずに s に追いつくまで r を進める
3. 1からの手順を表の最後まで繰り返す
102は一致する相手がいないけど、転記される必要があるのかな?
ぱっと思いつくのは
ポインタをrとsの2つを用意してr=1, s=1から始める
1. Cells(s, 1) == Cells(r, 1) の間だけ s を進める。
2. Cells(s, 1) の値が変わったところで
a) s - r > 1 なら Cells(r, 1) を転記しながら s に追いつくまで r を進める
b) s - r == 1 なら転機せずに s に追いつくまで r を進める
3. 1からの手順を表の最後まで繰り返す
421デフォルトの名無しさん (ワッチョイ 9901-jfTJ)
2022/08/18(木) 22:39:41.60ID:MNMwm62Z0422デフォルトの名無しさん (ワッチョイ 4d2f-O3lh)
2022/08/19(金) 01:11:58.45ID:OSKKwF+I0423デフォルトの名無しさん (ワッチョイ 9901-jfTJ)
2022/08/19(金) 07:58:47.24ID:YEGDOEOJ0424デフォルトの名無しさん (ワッチョイ e179-ETcs)
2022/08/19(金) 09:33:47.59ID:TD6yT77i0 まずどういう出力か書けよ
頭悪すぎだろ
頭悪すぎだろ
425デフォルトの名無しさん (ササクッテロ Spf1-gduT)
2022/08/19(金) 10:55:40.42ID:agk3kSn7p426デフォルトの名無しさん (ワッチョイ 42d8-joTH)
2022/08/19(金) 11:00:49.57ID:0SH6JCsd0427デフォルトの名無しさん (スップ Sdc2-ZiF6)
2022/08/19(金) 11:05:43.32ID:nezaNaBad 423の足しこんでいくというのは?もう何もわからない
428デフォルトの名無しさん (スップ Sdc2-ZiF6)
2022/08/19(金) 11:07:12.98ID:nezaNaBad 転記?今日の天気?
Excel必要ですか
Excel必要ですか
429デフォルトの名無しさん (ワッチョイ e1da-5+Zi)
2022/08/19(金) 11:32:50.63ID:LZdSBpbV0 うるせえ!この禿!
430デフォルトの名無しさん (ワッチョイ 6eda-5Ix7)
2022/08/19(金) 13:14:47.90ID:aeNJth6k0 まず髪の毛緑に染めてこい
431デフォルトの名無しさん (スッップ Sd62-9bk+)
2022/08/19(金) 13:37:04.21ID:NSoYBxeid 質問する側がおかしいと(どういう結果にしたいかが不明の場合)回答する気も失せるよね上下一致と言われたら
A
B
C
D
ならBを基準にA=BかつB=Cって自分はするんだが違うんだろ?
A
B
C
D
ならBを基準にA=BかつB=Cって自分はするんだが違うんだろ?
432デフォルトの名無しさん (ワッチョイ d2bd-dwW8)
2022/08/19(金) 16:42:31.05ID:TM0tepDc0 重複除去したいって解釈してた
433デフォルトの名無しさん (ワッチョイ 4d2f-O3lh)
2022/08/19(金) 17:14:26.61ID:OSKKwF+I0434デフォルトの名無しさん (ワッチョイ e1da-5+Zi)
2022/08/19(金) 19:41:03.51ID:LZdSBpbV0 知らないのでわ?
435デフォルトの名無しさん (スップ Sdc2-9bk+)
2022/08/19(金) 19:54:20.05ID:fs7pDiUMd 足しこむとか転記とか何がしたいか意味不明なんだよね
単純にいま記載されている列の値について
1.同じ値が続く場合は最初の一つだけ残す
2.ただし途中にある空白は無視する(1、空白、1は同じ値が続いてるとする)
3.最終的に残した値で詰める または 残した値は別の列なりシートなりに転記する
みたいな事をやりたいのか質問見ただけではわからんのよね
この場合なら検索する行とセットする行を用意すれば簡単にできる話なんだけどね
仕事もそうなんだけど説明が下手な人ってやっぱり仕事もできない人が多い
単純にいま記載されている列の値について
1.同じ値が続く場合は最初の一つだけ残す
2.ただし途中にある空白は無視する(1、空白、1は同じ値が続いてるとする)
3.最終的に残した値で詰める または 残した値は別の列なりシートなりに転記する
みたいな事をやりたいのか質問見ただけではわからんのよね
この場合なら検索する行とセットする行を用意すれば簡単にできる話なんだけどね
仕事もそうなんだけど説明が下手な人ってやっぱり仕事もできない人が多い
436デフォルトの名無しさん (スッップ Sd62-hvLj)
2022/08/19(金) 20:23:56.98ID:uBoRK/pGd 足し込むというのが加算という意味であれば必然的に数値ということになるけど、、、
上の行と同じ数値なら足し算する=2倍するってことか?
それとも上と下の行が同じ数値なら現在行と上下の3行の和にするってことか?
なんかいろんな解釈ができる要望なんよね。。。
上の行と同じ数値なら足し算する=2倍するってことか?
それとも上と下の行が同じ数値なら現在行と上下の3行の和にするってことか?
なんかいろんな解釈ができる要望なんよね。。。
437デフォルトの名無しさん (ワッチョイ 424f-gduT)
2022/08/19(金) 22:10:12.43ID:zQKwV5nn0 まぁ重複したデータを足し込むのか削除するのかはさした問題ではない。
ディクショナリやコレクションに元にあった値をキーにして
まずキーと同じ値をキーに該当する値として設定して、
同じキーが次回来たときに無視するか足し込むかすればいいだけの話だからな
最後にそれをシートに展開すればいいだけの話。
そうしとけば足し込もうが重複削除だろうが簡単に対応出来る。
SQLを知っているならSQLでやってもいい。
問題は同じ値が飛び石で来る可能性があるのかということ。
例えば101、101、102、101の順序で来ることがあるのか?
この場合、要件としては「上下で一致しているものだけ足し込む」ということなので上の例で言えば202、102、101と設定されるのが正ということになる。
これは上記した方法でやるのはかえってまどろっこしい。
そうしたら上から舐めてコレクションに値を格納、前回の行と次の行の頭が同じなら無視するか足し込むかすればいいし、値が違うならそのままコレクションに追加すればいい。
最後にそれをシートに展開する。
このように同じ数値が飛び石で来るかで作りがガラッと変わってしまう。せめてそこだけでもハッキリさせてくれれば。
ディクショナリやコレクションに元にあった値をキーにして
まずキーと同じ値をキーに該当する値として設定して、
同じキーが次回来たときに無視するか足し込むかすればいいだけの話だからな
最後にそれをシートに展開すればいいだけの話。
そうしとけば足し込もうが重複削除だろうが簡単に対応出来る。
SQLを知っているならSQLでやってもいい。
問題は同じ値が飛び石で来る可能性があるのかということ。
例えば101、101、102、101の順序で来ることがあるのか?
この場合、要件としては「上下で一致しているものだけ足し込む」ということなので上の例で言えば202、102、101と設定されるのが正ということになる。
これは上記した方法でやるのはかえってまどろっこしい。
そうしたら上から舐めてコレクションに値を格納、前回の行と次の行の頭が同じなら無視するか足し込むかすればいいし、値が違うならそのままコレクションに追加すればいい。
最後にそれをシートに展開する。
このように同じ数値が飛び石で来るかで作りがガラッと変わってしまう。せめてそこだけでもハッキリさせてくれれば。
438デフォルトの名無しさん (スップ Sd1f-XvCx)
2022/08/20(土) 00:10:31.82ID:KYv4qV6Cd もう終わった話なんだと思うけど正直質問する人はこういうデータをいじりたいという事は伝えても
結果としてこういうものが欲しいっていう事を伝える人が少ないんだよね
だからいろんな解釈ができるからその辺もちゃんと情報を伝えてほしいわ
結果としてこういうものが欲しいっていう事を伝える人が少ないんだよね
だからいろんな解釈ができるからその辺もちゃんと情報を伝えてほしいわ
439デフォルトの名無しさん (ワッチョイ ffda-tEjH)
2022/08/21(日) 19:54:19.68ID:+6WkTpkf0 そういうの含めて個人の能力
440デフォルトの名無しさん (ワッチョイ 1f5f-liIk)
2022/08/24(水) 18:51:09.99ID:VyM585LM0 Unique関数の引数って二次元配列じゃないとだめなの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【独占スクープ】元TOKIOの松岡昌宏がSTARTO社を“退所”へ「国分のコンプライアンス違反」問題をきっかけに決断、12月から単独で活動 [Ailuropoda melanoleuca★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
- 26歳で母親46歳だけど45とかで子供産む人正直グロいな…
- するってぇと何かい?2週間前に安全を確認して輸入再開した海産物を食の安全のために輸入停止にしたってのかい?
- 【超絶朗報】高市早苗、月給5万円アップを突如確定させるWWWWW
- 【高市核兵器】 小泉コメ防衛大臣「民主党政権 岡田外務大臣の “非核三原則” に関する国会答弁を引き継いでいる」 政策堅持を明言 [485983549]
- ㊗157円 [194819832]
