[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 12/29 06:14 / Filesize : 265 KB / Number-of Response : 993
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part77



1 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 07:07:35.59 ID:tS4zKdphH.net]
!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

348 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 00:54:21.19 ID:C3GQNRB30.net]
Print Eight.Name
Mary

349 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 07:49:57.82 ID:Q44FuubAd.net]
>>346
ハゲる→外に出られなくなる→VBAしか無い人生に陥る

350 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 18:00:34.01 ID:+/onKVXv0.net]
禿が気になるなら頭ツルッツルにするという構想は無いのかね?

351 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 18:44:02.54 ID:qT7WXGgOd.net]
Dim Hair As Object
Set Hair = Nothing

352 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 21:29:48.82 ID:+/onKVXv0.net]
>>351
座布団100枚

353 名前:デフォルトの名無しさん mailto:sage [2022/08/13(土) 22:55:44.03 ID:ZiFcsOVE0.net]
>>346
こら!良い大人ならスキンヘッドと言いなさい!

354 名前:デフォルトの名無しさん (ワッチョイ d2bd-nhkz) mailto:sage [[ここ壊れてます] .net]
スキンヘッドが似合う顔ならスキンヘッドにしてるんですよ・・・

355 名前:デフォルトの名無しさん [2022/08/14(日) 11:14:09.47 ID:VI2zLni0a.net]
ezoe職務質問されたってよ

356 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 13:17:19.86 ID:RtZKjyzz0.net]
>>355
QZ は逮捕・拘留11日を食らったってよ



357 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 16:16:37.77 ID:L75yFRnI0.net]
スキンヘッドは
メガネがポイントだと思う。
閑話休題。

次の話者に期待

358 名前:デフォルトの名無しさん [2022/08/14(日) 16:36:03.46 ID:LT2TaV3B0.net]
皮頭よりはハゲと言われたほうが人権を尊重してるだろ

359 名前:デフォルトの名無しさん [2022/08/14(日) 19:46:54.17 ID:mUrr83gX0.net]
>>349
→VBAの質問スレに書きこむようになる

360 名前:デフォルトの名無しさん [2022/08/14(日) 23:12:05.82 ID:LT2TaV3B0.net]
きみたちハーゲマンに質問なのですが
VBAの配列でJavascriptのようにpushやpopを使いたいときってどうしてます?
わざわざredim使って要素数を変えるのはそれが頻繁になるときは使いづらいなと思うし。

361 名前:デフォルトの名無しさん mailto:sage [2022/08/14(日) 23:52:33.60 ID:mUrr83gX0.net]
>>360
最初の配列はそのままで添え字を管理

362 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 00:13:18.77 ID:WD7exLpg0.net]
ツルピカかつ、不精ヒゲだから女さんなんて絶対に寄り付かない。

363 名前:310 mailto:sage [2022/08/15(月) 05:37:50.20 ID:zxOEKBbO0.net]
>>360
VBA で残念に思う所の一つやね
サイズの上限が決められるならその上限で確保してサイズは別途管理
上限が決められない時はReDimでちまちま管理してる
あとReDimでサイズを0にできないのも地味に辛い

364 名前:デフォルトの名無しさん [2022/08/15(月) 06:56:28.24 ID:OUaqH/oW0.net]
>>361
>>363
レスありがとう、ハーゲマンたち。
じゃあしかたないんですね。
でもVBAでもpush, pop, shift, unshiftが使える配列のようなものをVBAのクラスかなにかを使って再現することは可能だろうか?

365 名前:デフォルトの名無しさん [2022/08/15(月) 07:26:27.37 ID:3rPnXTV50.net]
>>364
可能、だが○○の機能がないから作れないではなく
目的の動作をするように作るんじゃね
質問が本末転倒している

366 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 08:25:48.51 ID:7kbqjBHA0.net]
>>364
他の言語でもスタックやキューは長さの決まった配列だよ
そこへオブジェクトを出し入れするときに端のポインタを動かすだけ
長さが足りなくなったら長さ2倍の配列を新しく定義してそっちへオブジェクトを引っ越し、オブジェクトの数が長さの25%を下回るようになったら長さ半分の配列を作り直してそっちへ引っ越し



367 名前:310 mailto:sage [2022/08/15(月) 08:28:07.85 ID:zxOEKBbO0.net]
>>364
pushpush, pop だけだけど実装例
https://kazusa-pg.com/vba-stack/

368 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 12:57:14.28 ID:3rPnXTV50.net]
EXCELのシートが配列みたいなもんだし

369 名前:310 mailto:sage [2022/08/15(月) 13:34:09.14 ID:zxOEKBbO0.net]
>>366
それは実装による
リストで実装してる奴もあるし

370 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 16:10:48.09 ID:Z5BB7x+B0.net]
VB(A)の配列でpopが必要になる場面ってあんまないなあ
不要になったらemptyぶちこむだけだし

371 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 18:21:13.35 ID:u0LihC760.net]
時間データ
>>364
他言語はよー知らんけどdictionaryじゃあかんの?

372 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 18:23:08.68 ID:u0LihC760.net]
>>371
ああスマン。なんかへんな一言張り付いた。

373 名前:デフォルトの名無しさん [2022/08/15(月) 19:15:38.92 ID:HvBHLkJg0.net]
Dictionaryでいいと思う。
キーに連番、スタックポインタ代わりに変数一個用意してやって、使い終わったらremove で消して。

374 名前:デフォルトの名無しさん (ワッチョイ 6eda-5Ix7) mailto:sage [[ここ壊れてます] .net]
やり方は色々あるのにVBAが使いにくいとか言い出す初心者w

375 名前:デフォルトの名無しさん (ワッチョイ 4d2f-O3lh) mailto:sage [[ここ壊れてます] .net]
だがしかしVBAにDictionaryはないのだよ

WSHはいつまでサポートされるかなぁ
VBAより短い気がしてきた

まあ俺ならどうしてもキューかスタックほしいなら、.NET Frameworkのやつ使うかな

376 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 19:54:05.83 ID:3rPnXTV50.net]
だからVBA使うのやめなよ



377 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 20:17:32.58 ID:kNyRr/sv0.net]
VBAでDictionary使えるでしょ

378 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 20:25:53.14 ID:u0LihC760.net]
ああ、なるほど。いつ使えなくなるとも知れないとなれば先々を考えて使わないほうがいいかもね。たしかに使い方も特殊だし。>dictionary

まぁ、それなら捨てsheet作って貼り付けるかな。2次元までなら。
そのかわり処理速度は格段に落ちる可能性はあるけど、待ってりゃいいならそれもアリか。

379 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 20:28:32.11 ID:Mg/eEpn60.net]
それって findfirst/findnext 一発で済む問題なのでは?いちいちマクロで書くのもウザったいですよね‥‥

380 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 20:41:37.63 ID:3rPnXTV50.net]
使いにくいとか面倒とか愚痴るくらいならEXCEL使うのやめればいいのに

381 名前:デフォルトの名無しさん [2022/08/15(月) 21:05:11.95 ID:OUaqH/oW0.net]
>>371
Dictionaryはとおの昔から使っておったのじゃよ。
しかし使い続けているうちにふと頭をさわるとなんとハゲてしまったのじゃ。
それは困ると思ってDictionaryに変わるいい方法を探求しておるのじゃ。

382 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 21:40:01.71 ID:u0LihC760.net]
>>381
なんだ、ただふざけてるだけか。。。

383 名前:デフォルトの名無しさん mailto:sage [2022/08/15(月) 22:39:37.83 ID:fsND5nPed.net]
そんなハゲ頭に免じてArrayListを進ぜよう

384 名前:デフォルトの名無しさん [2022/08/15(月) 22:52:26.96 ID:HvBHLkJg0.net]
DictionaryがイヤならCollection使えばいいと思うけど。
まぁ別に普通に配列でもいいんだけどさ。
多少凝った作りにしたって関数化しとけばいい訳だし。

385 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 04:43:22.32 ID:Z2Qcd4DId.net]
>>384
流石に無知すぎるから少し黙った方がいいよ

386 名前:310 mailto:sage [2022/08/16(火) 05:59:23.35 ID:CNdrdYLw0.net]
Collection に Exists メソッドがあれば...



387 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 11:11:29.27 ID:09rAK4Ti0.net]
何作ってんだよ

388 名前:デフォルトの名無しさん [2022/08/16(火) 12:23:01.42 ID:2L6vp4NY0.net]
>>385
そうだね
よく分かりもしないで無知とか決めつける無知は
すっこんでればいいよね

389 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 16:58:27.92 ID:tG1qlgnq0.net]
あまりマウントの取り合いは止めようぜ
意見交換の場なんだから

390 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 17:40:43.11 ID:09rAK4Ti0.net]
どちらかというとけなし合いだな

391 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 18:00:08.72 ID:0h33t1VnM.net]
ここにいると神になった気分になるな
お前らの見苦しさに対してもなんだか優しくなれそう

392 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 18:20:47.96 ID:tG1qlgnq0.net]
昔は違ったんよ
いつからか荒れやすいスレになった

393 名前:デフォルトの名無しさん [2022/08/16(火) 20:19:48.02 ID:NUsqsy200.net]
>>382
ふざけてるつもりは毛頭ございませぬ。
でもこれからもハーゲマンの名に恥じぬようVBAを探求していきたいです。

394 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 20:50:53.76 ID:tG1qlgnq0.net]
毛という毛全部剃っちゃえ!

395 名前:デフォルトの名無しさん [2022/08/16(火) 21:16:40.24 ID:NUsqsy200.net]
>>394
アホ。
そしたらハゲてまうやんけ。

396 名前:デフォルトの名無しさん mailto:sage [2022/08/16(火) 21:54:28.52 ID:tG1qlgnq0.net]
え?
別にいいじゃん、アンタ元から禿なんだから。



397 名前:デフォルトの名無しさん [2022/08/17(水) 01:45:03.16 ID:d962r+SMa.net]
ソルのはムダ毛だけにしとけ

398 名前:デフォルトの名無しさん [2022/08/17(水) 01:57:01.99 ID:sNWv67oad.net]
頭髪は生えないのに髭は生える

399 名前:デフォルトの名無しさん [2022/08/17(水) 04:59:55.38 ID:EILeizBb0.net]
>>396
コラ、われわれハゲ族は、
励まし合って生きていかねばならぬ。
ハゲ増し合うことはするな。

400 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 07:35:41.89 ID:hasTYsFP0.net]
頭髪はハゲても、耳毛は濃くなる

401 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 11:39:32.10 ID:Ork7WWB+0.net]
禿ではないのだけど、40歳にして髪は真っ白よ。

402 名前:デフォルトの名無しさん (ワッチョイ 6eda-5Ix7) mailto:sage [[ここ壊れてます] .net]
好きな色に染めようぜ

403 名前:デフォルトの名無しさん mailto:sage [2022/08/17(水) 12:58:33.86 ID:PQdbwjDzr.net]
Excelらしく緑だな

404 名前:デフォルトの名無しさん [2022/08/18(木) 12:18:45.39 ID:yPHO1+kSp.net]
なんという体たらく
もうハゲはこのスレ出入り禁止でいいな

405 名前:デフォルトの名無しさん (ワッチョイ fdb7-laJE) mailto:sage [[ここ壊れてます] .net]
2つの表があって、表Aと表Bとして
表の作りは二つとも同じで、
コードと数字を持ってます。
二つの表のコードが一致してる場合は

コード  A B
101 50 60
102 40 100
103 30
104 50

といった感じで片方にしか存在しない場合は片方だけの行を追加して行くってvbaを作りたいんですが、何かいい案はありますか?
AとBの表で数字の比較をしたいです
for nextでやろうとしてますがうまくいいやり方が見つからずです

406 名前:デフォルトの名無しさん (ブーイモ MM85-Hx7L) mailto:sage [[ここ壊れてます] .net]
まずVBAを忘れます
SQLで FULL OUTER JOIN します
(゚д゚)



407 名前:デフォルトの名無しさん (ワッチョイ 468c-hYSv) [[ここ壊れてます] .net]
>>405
テーブルのリレーションシップを設定したらいいんじゃないかな

408 名前:デフォルトの名無しさん (アウアウウー Saa5-dwW8) mailto:sage [[ここ壊れてます] .net]
例えば以下の様なデータがあるとします

開始~終了:消費量
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 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:01:03.74 ID:JMDQexcx0.net]
vlookupでできない?
普通にforループでも難しいことなさそうだけど、どんなコード書いたの?

410 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:04:36.75 ID:JMDQexcx0.net]
>>409>>405へのレスね

411 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:14:31.63 ID:EMP5KmCeM.net]
>>408
まず問題を分割しよう
まず(step1)日別にレコードを分割し、(step2)それを日付でグループ化して合計を出すと考えればいい
step2は典型的なグループ化と小計なんで楽勝として、step1はちょっと面倒だから更に分割しようか
例えば、入力として一行の内容を渡すと、日別分割されたレコードの配列を返す関数を作って、その結果を結合すればいいだろう

412 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 15:53:00.45 ID:XgHMEnCRd.net]
>>405
深く考えなくていいなら
①2つの表(シート)をそれぞれ参照して作業用のシートAを作る
コード シート 値
101 A 50
102 A 40 
・・・
101 B 60
102 B 100
②シートAをソートする
③シートAの内容を読み込んで質問にあるようなシートBを作る

413 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:12:23.70 ID:EfwMa2qS0.net]
できた!
二重ループでできました。

414 名前:411 mailto:sage [2022/08/18(木) 16:21:20.45 ID:fCi7ElhaM.net]
日別分割関数について補足しておこう
この関数を更に分割すれば、下記のようになるだろう
(1) 開始日時と終了日時の間の日付を全て取得する
(2) 終了日時と開始日時の差を時間単位で求め、結果をHとする
(3) (1) で取得したそれぞれの日付(dとする)について、下記を実施する
(3.1) 開始日時と終了日時の間において、日付dに属する時間が何時間あるかを計算し、結果をhとする
(3.2) 消費量*h/Hを計算し、結果をxとする
(3.3) 日付dと消費量xのペアを分割結果の1レコードとする

ここまで分ければ簡単だろう。もしまだ難しければこのように適宜分割するとよい。

415 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:23:33.57 ID:MNMwm62Z0.net]
初歩的な質問なんだけど、上下一致してる場合だけ転記して行くという場合

1行目は例外として省く処理いれて
cells(r-1,1)=cells(r,1)とかってやってくと、不一致のものが現れた時に一致してた行の最初の値が転記できなくなるんだけどどうしたらいい?

100
100
101
101
102

とかって並びの時に、100の一番上が転記されないとか
102とかも転記されない
上下比較の時の最適解の比較方法を知りたい

416 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:23:56.43 ID:X/mZUHYK0.net]
>>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



417 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:34:05.48 ID:EfwMa2qS0.net]
>>416
ありがとぅざいます!
そうなんです
考え出したらこれかなり面倒だなと思って、、

同じような発想かもしれないですが

外のループはA表のコード番号の縦列の値を固定して、
内側ループでB表を縦にコードが一致するまで検知して
一致した場合フラグを立てて、一致したコードの時は一致してるコードの隣に値を転記。
内側ループを抜けた時点でフラグが立っていない場合はBにしか存在しない値なので、A表の最終行以降に転記

って考え方でいけました!

418 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 16:37:32.42 ID:EfwMa2qS0.net]
あ.A表に転記ではなくてC表ですね

419 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 18:49:57.27 ID:AeknNWbaa.net]
>>411,414
ありがとうございます、そのヒント元に自己解決できました

1. 対象となる期間を配列に格納
2. データを1つずつ0:00で分解、按分は都度[その日の時間/全体の時間]で実施
3. 配列内の一致する日付に割振り
4. 2-3ループ

420 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 20:46:21.25 ID:JMDQexcx0.net]
>>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からの手順を表の最後まで繰り返す

421 名前:デフォルトの名無しさん mailto:sage [2022/08/18(木) 22:39:41.60 ID:MNMwm62Z0.net]
>>420
相手がいない場合も転記です
そのやり方試してみます
単純そうでむずかしい…

422 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 01:11:58.45 ID:OSKKwF+I0.net]
>>415
そこからどういうデータを求めたいんだ?
単に重複データ削除するだけで良い気がするんだが

423 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 07:58:47.24 ID:YEGDOEOJ0.net]
>>422
上下一致してるものだけ足し込んでいくということをしたいです
一致してなくても一個だけのはそのまま転記したい
空白は無視で
単純なコードでいけるかなと思ったら難しくて、、

424 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 09:33:47.59 ID:TD6yT77i0.net]
まずどういう出力か書けよ
頭悪すぎだろ

425 名前:デフォルトの名無しさん [2022/08/19(金) 10:55:40.42 ID:agk3kSn7p.net]
>>424
>>423で説明すているだろ
これで分からないってお前白痴か?

426 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:00:49.57 ID:0SH6JCsd0.net]
>>415の入力例で言うと
100は上下で一致してるから転記する
101は上下で一致するからこれも転記する
>>421の説明だと102単独でも転記する
転記しない入力例ってどんなのよ?



427 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:05:43.32 ID:nezaNaBad.net]
423の足しこんでいくというのは?もう何もわからない

428 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:07:12.98 ID:nezaNaBad.net]
転記?今日の天気?
Excel必要ですか

429 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 11:32:50.63 ID:LZdSBpbV0.net]
うるせえ!この禿!

430 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 13:14:47.90 ID:aeNJth6k0.net]
まず髪の毛緑に染めてこい

431 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 13:37:04.21 ID:NSoYBxeid.net]
質問する側がおかしいと(どういう結果にしたいかが不明の場合)回答する気も失せるよね上下一致と言われたら
A
B
C
D
ならBを基準にA=BかつB=Cって自分はするんだが違うんだろ?

432 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 16:42:31.05 ID:TM0tepDc0.net]
重複除去したいって解釈してた

433 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 17:14:26.61 ID:OSKKwF+I0.net]
>>423
最終的に欲しい形を書け

エクセルの機能に重複データの除去ってあるのはしってるのか?

434 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 19:41:03.51 ID:LZdSBpbV0.net]
知らないのでわ?

435 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 19:54:20.05 ID:fs7pDiUMd.net]
足しこむとか転記とか何がしたいか意味不明なんだよね
単純にいま記載されている列の値について
1.同じ値が続く場合は最初の一つだけ残す
2.ただし途中にある空白は無視する(1、空白、1は同じ値が続いてるとする)
3.最終的に残した値で詰める または 残した値は別の列なりシートなりに転記する
みたいな事をやりたいのか質問見ただけではわからんのよね
この場合なら検索する行とセットする行を用意すれば簡単にできる話なんだけどね
仕事もそうなんだけど説明が下手な人ってやっぱり仕事もできない人が多い

436 名前:デフォルトの名無しさん mailto:sage [2022/08/19(金) 20:23:56.98 ID:uBoRK/pGd.net]
足し込むというのが加算という意味であれば必然的に数値ということになるけど、、、

上の行と同じ数値なら足し算する=2倍するってことか?
それとも上と下の行が同じ数値なら現在行と上下の3行の和にするってことか?

なんかいろんな解釈ができる要望なんよね。。。



437 名前:デフォルトの名無しさん [2022/08/19(金) 22:10:12.43 ID:zQKwV5nn0.net]
まぁ重複したデータを足し込むのか削除するのかはさした問題ではない。
ディクショナリやコレクションに元にあった値をキーにして
まずキーと同じ値をキーに該当する値として設定して、
同じキーが次回来たときに無視するか足し込むかすればいいだけの話だからな
最後にそれをシートに展開すればいいだけの話。
そうしとけば足し込もうが重複削除だろうが簡単に対応出来る。
SQLを知っているならSQLでやってもいい。

問題は同じ値が飛び石で来る可能性があるのかということ。
例えば101、101、102、101の順序で来ることがあるのか?
この場合、要件としては「上下で一致しているものだけ足し込む」ということなので上の例で言えば202、102、101と設定されるのが正ということになる。
これは上記した方法でやるのはかえってまどろっこしい。
そうしたら上から舐めてコレクションに値を格納、前回の行と次の行の頭が同じなら無視するか足し込むかすればいいし、値が違うならそのままコレクションに追加すればいい。
最後にそれをシートに展開する。

このように同じ数値が飛び石で来るかで作りがガラッと変わってしまう。せめてそこだけでもハッキリさせてくれれば。

438 名前:デフォルトの名無しさん mailto:sage [2022/08/20(土) 00:10:31.82 ID:KYv4qV6Cd.net]
もう終わった話なんだと思うけど正直質問する人はこういうデータをいじりたいという事は伝えても
結果としてこういうものが欲しいっていう事を伝える人が少ないんだよね
だからいろんな解釈ができるからその辺もちゃんと情報を伝えてほしいわ

439 名前:デフォルトの名無しさん (ワッチョイ ffda-tEjH) mailto:sage [[ここ壊れてます] .net]
そういうの含めて個人の能力

440 名前:デフォルトの名無しさん mailto:sage [2022/08/24(水) 18:51:09.99 ID:VyM585LM0.net]
Unique関数の引数って二次元配列じゃないとだめなの?

441 名前:デフォルトの名無しさん [2022/08/24(水) 19:20:17.01 ID:lK4e5BLcM.net]
Range型を渡すんじゃダメなの?

442 名前:デフォルトの名無しさん [2022/08/24(水) 20:13:49.71 ID:LO0U8Jrb0.net]
実際に試してみれば答えが出ると思うのだが

443 名前:デフォルトの名無しさん (ワッチョイ 1fce-tEjH) mailto:sage [[ここ壊れてます] .net]
マニュアル読め

444 名前:デフォルトの名無しさん (ワッチョイ 9fda-iK0u) mailto:sage [[ここ壊れてます] .net]
MSヘルプですね~

445 名前:デフォルトの名無しさん [2022/08/28(日) 22:27:57.16 ID:uLwcj+rg0.net]
excel2019
win10

設定シートに各項目を入力させたらそれに応じて別シートに計算結果を入力させるVBAを書いてる途中なのですが、
VBAソースを書いてる途中に設定シートにこんな数値も持たせたい、
入力画面のレイアウトをあれこれ変えたいと行や列の挿入をしたくなってしまうのですが
そうするとVBAソースの方がずれたままになってしまうのですが、シートに挿入をしたら
それにともなって既にかけている部分だけでもソースコードのcellsやrangeの値が更新されてくれたりしないでしょうか?

446 名前:デフォルトの名無しさん [2022/08/28(日) 22:36:45.40 ID:bZvgSFoz0.net]
>>445
参照先は自動更新されない
セルに名前を付けてその名前で参照すればよい



447 名前:デフォルトの名無しさん [2022/08/28(日) 22:37:28.82 ID:z6hd8oqM0.net]
名前付きセル範囲
https://thom.hateblo.jp/entry/2016/07/08/001933

448 名前:デフォルトの名無しさん mailto:sage [2022/08/29(月) 20:34:19.97 ID:6xba6Hkk0.net]
おまいらが毛がどうのこうので喜ぶがらマジで頭ツルッツルにしてきたぞ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<265KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef