!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:uDfmpksE0748デフォルトの名無しさん (ワッチョイ 7a01-he4x)
2020/08/02(日) 13:42:27.44ID:7JTul7vs0 俺らそういうのいやだから
重複しなさそうとか認めないし
重複しなさそうとか認めないし
749デフォルトの名無しさん (ワッチョイ 4e06-LqCg)
2020/08/02(日) 14:04:53.69ID:i29UoGb/0 ベースモデル考えて確率的に速い手段を選ぶだけ。
コード書くのが好きなら計算結果を配列に入れて、既定カウントに達するまで回せばいいけど、時間の無駄。
コード書くのが好きなら計算結果を配列に入れて、既定カウントに達するまで回せばいいけど、時間の無駄。
750デフォルトの名無しさん (ワッチョイ f102-Y3wz)
2020/08/02(日) 14:52:01.85ID:6ZNrYs7D0 条件にもよるけど今回の話の場合は1回目重複覚悟でやってから重複分だけ再度重複なしの方法でやるのが速そうだね
751デフォルトの名無しさん (ワッチョイ 7a01-he4x)
2020/08/02(日) 15:17:38.22ID:7JTul7vs0 時間かかるってそんなの5分で終わるし
752デフォルトの名無しさん (ワッチョイ 4e06-hU8h)
2020/08/02(日) 18:40:53.06ID:i29UoGb/0 >>751
ワッチョイって何かわかる?
ワッチョイって何かわかる?
753デフォルトの名無しさん (ワッチョイ 7a01-he4x)
2020/08/02(日) 19:11:50.62ID:7JTul7vs0754デフォルトの名無しさん (ワッチョイ 5d01-UD9X)
2020/08/02(日) 22:26:59.52ID:RZU5Rxbr0 >>747
A列:連番
B列:口数
C列:当選確率 = 口数/口数の合計
D列:点数 = 当選確率*RAND()
これでソートかけたほうが簡単じゃね
300番付近のボーダーラインで点数の重複が生じたら
重複者のみを対象に再度抽選
まだ重複者がいたらさらに再度抽選(・・・)
再抽選回数が0〜300と未定だけども現実的には多くても数回で終わるだろうよ
A列:連番
B列:口数
C列:当選確率 = 口数/口数の合計
D列:点数 = 当選確率*RAND()
これでソートかけたほうが簡単じゃね
300番付近のボーダーラインで点数の重複が生じたら
重複者のみを対象に再度抽選
まだ重複者がいたらさらに再度抽選(・・・)
再抽選回数が0〜300と未定だけども現実的には多くても数回で終わるだろうよ
755デフォルトの名無しさん (ワッチョイ 4e06-LqCg)
2020/08/02(日) 22:40:10.04ID:i29UoGb/0 >>754
そちらの方がいいですね。
そちらの方がいいですね。
756デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)
2020/08/03(月) 02:34:06.94ID:R5x2YJ6L0 それだと当選確率が公平にならない気がする
まあコーディングの手間と計算時間と公平さとどっちを取るかだな
まあコーディングの手間と計算時間と公平さとどっちを取るかだな
757デフォルトの名無しさん (ワッチョイ 99da-xE3T)
2020/08/03(月) 05:36:57.74ID:Z9mi6E360 一回の抽選ごとに当選者を省いていけばいとおもうが
758デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)
2020/08/03(月) 06:39:58.48ID:R5x2YJ6L0 数学的に「当選者を除外しながら次を抽選」で公平になる
A列に応募者を一列に並べて、2口応募なら2回並べて、存在するデータの行数*RAND()+1で抽選すれば、自動的に口数に比例して当選確率が上がる
当選者はどこかに覚えておいて、A列から除外してから次を抽選
300人の抽選なんて1秒もかからないし、プログラムもきわめて単純、作業列も必要ない
A列に応募者を一列に並べて、2口応募なら2回並べて、存在するデータの行数*RAND()+1で抽選すれば、自動的に口数に比例して当選確率が上がる
当選者はどこかに覚えておいて、A列から除外してから次を抽選
300人の抽選なんて1秒もかからないし、プログラムもきわめて単純、作業列も必要ない
759デフォルトの名無しさん (ワッチョイ 017c-1vA1)
2020/08/03(月) 11:15:41.27ID:n1hXaiTs0 >>756
当選の公平さを取らないと企業として問題あるよ
当選の公平さを取らないと企業として問題あるよ
760デフォルトの名無しさん (テテンテンテン MMee-DfbS)
2020/08/03(月) 11:17:37.07ID:uwp3oPMnM 5ちゃんに書き込んでる時点でお察し
761デフォルトの名無しさん (ワッチョイ 017c-1vA1)
2020/08/03(月) 11:20:43.87ID:n1hXaiTs0 もう無理して数式でなんとかしようとするよりVBAでさっさと作った方がややこしくないし手っ取り早いんじゃないの
それなら処理時間なんか気にする必要も無し
それなら処理時間なんか気にする必要も無し
762デフォルトの名無しさん (アウアウエー Sa22-9tPT)
2020/08/03(月) 12:19:51.87ID:nPrsNj3oa や〜い、お察しお察し〜
763デフォルトの名無しさん (アウアウウー Sa09-4GEq)
2020/08/03(月) 12:31:15.20ID:rYhmIRt7a いぜん懸賞の雑誌で架空の人物に当選したとかやってたな
764デフォルトの名無しさん (ラクッペペ MMee-LxoB)
2020/08/03(月) 12:34:55.84ID:Dbk7eCCQM 発表は発送をもってかえさせろってのは
みんなインチキだよ
運ちゃんがボスジャン着ていたのは役得
みんなインチキだよ
運ちゃんがボスジャン着ていたのは役得
765デフォルトの名無しさん (アウアウカー Sa5d-skXP)
2020/08/03(月) 12:41:50.97ID:1eg4GQBHa 抽選システムなんて大概再使用されるだろうから手作業で当選者除去とかやらないといけないならVBAで組んじゃったほうがいいだろうな
766デフォルトの名無しさん (ワッチョイ fa2f-LqCg)
2020/08/03(月) 13:54:58.27ID:QvK0nIgr0 つかVBAの乱数とか公平といえるんかね
本当に公平な抽選は第三者立ち合いで見えるようにやるんだが
本当に公平な抽選は第三者立ち合いで見えるようにやるんだが
767デフォルトの名無しさん (ワッチョイ 017c-1vA1)
2020/08/03(月) 14:42:43.98ID:n1hXaiTs0 プログラムによる抽選が不正扱いなら全国の企業が謝罪案件になるが・・・
768デフォルトの名無しさん (ワッチョイ fa63-uaxO)
2020/08/03(月) 14:57:06.86ID:wycAObPT0 第三者立ち合いで乱数生成を!?
769デフォルトの名無しさん (アウアウウー Sa09-4GEq)
2020/08/03(月) 15:12:09.39ID:7WhWwh2+a パチンコ屋はあやしい
770デフォルトの名無しさん (ワッチョイ 1602-xE3T)
2020/08/03(月) 15:30:38.22ID:2tn2jJCj0 立会人を選定するための立会人が必要になるな
771デフォルトの名無しさん (ワッチョイ 99da-xE3T)
2020/08/03(月) 18:38:47.21ID:Z9mi6E360 立会人って居るだけじゃねーの
772デフォルトの名無しさん (ワッチョイ d68e-nhZs)
2020/08/03(月) 18:41:49.78ID:cM5/PGxb0 座って接待を受けるだけの誰にでも出来る仕事
773デフォルトの名無しさん (ワッチョイ d6b3-UD9X)
2020/08/03(月) 20:25:24.18ID:YOfHflqE0 Sheet2で使うユーザーフォームにSheet1から参照したデータをコンボボックスに表示させ
CMBBox1の入力内容に合わせCMBBox2を連動させたいのですが
CMBbox1はこんな感じでデータを拾っています。
CMBBox1.RowSource = "Sheet1! H3:H" & Worksheets("Sheet1").Range("H" & Rows.Count).End(xlUp).Row
CMBBox2にCMBBox1が入力されると、参照列(H列)の4つ右のセルを表示させるにはどうしたらよいでしょうか
(CNBBox1にSheet1のH3が入力されると、CMBBox2のリストにSheet1のL3が表示される)
似たようなコードを拾ってきたのですがこれを弄って使えるようにしたいです。
Private Sub CMBBox1_Change()
Set ws = Worksheets("Sheet1")
Col = CMBBox1.ListIndex + 12
品名CMB2Box.Clear
For i = 1 To ws.Cells(Rows.Count, Col).End(xlUp).Row
CMBBox2.AddItem ws.Cells(i, Col).Value
Next
End Sub
よろしくお願いします
CMBBox1の入力内容に合わせCMBBox2を連動させたいのですが
CMBbox1はこんな感じでデータを拾っています。
CMBBox1.RowSource = "Sheet1! H3:H" & Worksheets("Sheet1").Range("H" & Rows.Count).End(xlUp).Row
CMBBox2にCMBBox1が入力されると、参照列(H列)の4つ右のセルを表示させるにはどうしたらよいでしょうか
(CNBBox1にSheet1のH3が入力されると、CMBBox2のリストにSheet1のL3が表示される)
似たようなコードを拾ってきたのですがこれを弄って使えるようにしたいです。
Private Sub CMBBox1_Change()
Set ws = Worksheets("Sheet1")
Col = CMBBox1.ListIndex + 12
品名CMB2Box.Clear
For i = 1 To ws.Cells(Rows.Count, Col).End(xlUp).Row
CMBBox2.AddItem ws.Cells(i, Col).Value
Next
End Sub
よろしくお願いします
774デフォルトの名無しさん (ワッチョイ 01e6-LxoB)
2020/08/03(月) 21:06:03.90ID:ukM+b7An0 リストに1件だけ表示っておかしくね?
そのデザインは却下だ
そのデザインは却下だ
775デフォルトの名無しさん (オッペケ Sr05-bwEi)
2020/08/03(月) 21:11:33.10ID:/CvXaagwr listindexとoffset使えばいけんじゃね?
776デフォルトの名無しさん (ワッチョイ 5d01-UdrD)
2020/08/03(月) 21:37:39.33ID:nPxqefQu0 A列最終行の次の行から、下方向150行に本日の日付を表示させたいのですが、
どう記述して良いのかわかりません。
ぐぐって最終行取得のコードまでは見つけたのですが、指定範囲に日付表示のコードを
見つけることが出来ませんでした。
お手数をおかけしますが、ご教授をお願いします。
どう記述して良いのかわかりません。
ぐぐって最終行取得のコードまでは見つけたのですが、指定範囲に日付表示のコードを
見つけることが出来ませんでした。
お手数をおかけしますが、ご教授をお願いします。
777デフォルトの名無しさん (ワッチョイ fa2f-LqCg)
2020/08/03(月) 21:49:07.37ID:QvK0nIgr0 >>773
自分で考える気なさそうだな
その拾ってきたコードのどこが分からんのだよ?
それが出来てそのあとどうする気か知らんが
CMBbox2.Clear
CMBbox2.AddItem (Sheet1.Cells(CMBbox1.ListIndex + 3, "L").Value)
これで、二度と来るな
自分で考える気なさそうだな
その拾ってきたコードのどこが分からんのだよ?
それが出来てそのあとどうする気か知らんが
CMBbox2.Clear
CMBbox2.AddItem (Sheet1.Cells(CMBbox1.ListIndex + 3, "L").Value)
これで、二度と来るな
778デフォルトの名無しさん (ワッチョイ d68e-nhZs)
2020/08/03(月) 21:53:06.72ID:cM5/PGxb0 また馬鹿が出てきた
779デフォルトの名無しさん (アウアウエー Sa22-gQbI)
2020/08/03(月) 23:28:33.53ID:lnWa4YOga780779 (アウアウエー Sa22-gQbI)
2020/08/03(月) 23:29:45.08ID:lnWa4YOga for とか、変数宣言とか抜けてるけど、そこはがんばって補完して。
781デフォルトの名無しさん (ドコグロ MM9a-kmLJ)
2020/08/03(月) 23:40:17.65ID:hUMORhdPM forなんて使わなくてもいいんじゃね
Sub test()
Dim i As Long
i = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(i + 1, 1), Cells(i + 150, 1)) = Date
End Sub
Sub test()
Dim i As Long
i = Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(i + 1, 1), Cells(i + 150, 1)) = Date
End Sub
782779 (アウアウエー Sa22-gQbI)
2020/08/03(月) 23:44:27.96ID:lnWa4YOga なるほど、それはそうだ。
失礼しました。
失礼しました。
783デフォルトの名無しさん (ワッチョイ 5d01-UdrD)
2020/08/04(火) 00:12:45.83ID:brj+kH5Y0784デフォルトの名無しさん (ワッチョイ 5d01-UdrD)
2020/08/04(火) 00:17:38.16ID:brj+kH5Y0785デフォルトの名無しさん (ワッチョイ 017c-1vA1)
2020/08/04(火) 00:51:16.26ID:EtqCKuKj0 そういう感想が出るってことは、答えを出すための手順を全く自分で考えたことがないのでは…
786デフォルトの名無しさん (ワッチョイ d68e-nhZs)
2020/08/04(火) 01:06:00.92ID:8QweQuKX0 >>784
死ねよ
死ねよ
787デフォルトの名無しさん (ワッチョイ 79ce-Xvfy)
2020/08/04(火) 02:59:27.48ID:o+2T/J1u0 RNDやRAND関数は疑似乱数だから公平じゃない
そもそもコンピューターで乱数を生成するのは不可能
知識としては知ってるけど、代替手段を考えるのも面倒だしみんなRNDを使ってるから別にいいんだよ、ってこと
そもそもコンピューターで乱数を生成するのは不可能
知識としては知ってるけど、代替手段を考えるのも面倒だしみんなRNDを使ってるから別にいいんだよ、ってこと
788デフォルトの名無しさん (ワッチョイ 99da-xE3T)
2020/08/04(火) 05:51:29.11ID:HcyQwD6H0 そのための乱数シードってのがある
789デフォルトの名無しさん (ワッチョイ 794e-wQ/k)
2020/08/04(火) 06:07:40.64ID:vydsY05j0 同じシード与えたら同じ乱数列吐くよね。
で?何のためにあるって?
で?何のためにあるって?
790デフォルトの名無しさん (ブーイモ MM69-23Ku)
2020/08/04(火) 06:08:47.59ID:k3XyFiOUM もう最大限のことも自分で考えない馬鹿には答えなくて良くね?
多分何度も聞きに来るぞ
多分何度も聞きに来るぞ
791デフォルトの名無しさん (ブーイモ MM69-23Ku)
2020/08/04(火) 06:09:01.26ID:k3XyFiOUM 最低限ねw
792デフォルトの名無しさん (ワッチョイ 99da-xE3T)
2020/08/04(火) 06:22:53.51ID:HcyQwD6H0 >>789
同じシードを与えないためだろ、使い方知らんのか?
同じシードを与えないためだろ、使い方知らんのか?
793デフォルトの名無しさん (ワッチョイ 7a4f-1TqB)
2020/08/04(火) 07:55:02.77ID:aUyBUHRY0794デフォルトの名無しさん (ワッチョイ 5d01-UD9X)
2020/08/04(火) 09:23:33.17ID:Lx6h4ngm0 数式で「真の乱数」を発生させることは不可能でしょ
何かしらの雑音を外部から取り入れるならあり得るけど
しかし真の乱数と区別できない疑似乱数というのはある
たかだか数万個の乱数を発生させる程度なら普通にRANDで構わんよ
コンピューター空間内(例えば64bit)なら32bitの疑似乱数を発生させ得る
何かしらの雑音を外部から取り入れるならあり得るけど
しかし真の乱数と区別できない疑似乱数というのはある
たかだか数万個の乱数を発生させる程度なら普通にRANDで構わんよ
コンピューター空間内(例えば64bit)なら32bitの疑似乱数を発生させ得る
795デフォルトの名無しさん (アウアウウー Sa09-4GEq)
2020/08/04(火) 09:36:35.85ID:PJZofGaLa excel起動時のシードが同じだから変えたほうがいいとおもう
796デフォルトの名無しさん (ワッチョイ 7a4f-1TqB)
2020/08/04(火) 12:47:00.19ID:aUyBUHRY0 >>794
数式で真の乱数を発生させることが出来ないのは多分そう。ただ、それでも真の乱数は発生出来る。
ただ、かなり特殊な環境で言語的にもかなり特殊なのでVBAだけやってる人にはまぁ分からないだろう。
ただそれは、一度世界で最も出回ったハードであり言語でもあって、それでは乱数を求めるのに至極当たり前の方法でもあったから
このスレにいるおじいちゃんにはひょっとして知ってる人もいるかも知れない。
数式で真の乱数を発生させることが出来ないのは多分そう。ただ、それでも真の乱数は発生出来る。
ただ、かなり特殊な環境で言語的にもかなり特殊なのでVBAだけやってる人にはまぁ分からないだろう。
ただそれは、一度世界で最も出回ったハードであり言語でもあって、それでは乱数を求めるのに至極当たり前の方法でもあったから
このスレにいるおじいちゃんにはひょっとして知ってる人もいるかも知れない。
797デフォルトの名無しさん (ブーイモ MMbe-QJFZ)
2020/08/04(火) 12:54:38.56ID:2b7giDdtM 乱数こそこのスレで教えてくれた最高の武器
15個〜20個しか評価してないデータを50個に乱数使ってn増ししてるわ
プロシージャ名は乱れ雪月花にしといた
15個〜20個しか評価してないデータを50個に乱数使ってn増ししてるわ
プロシージャ名は乱れ雪月花にしといた
798デフォルトの名無しさん (JP 0H62-3SEW)
2020/08/04(火) 13:32:34.79ID:Z82jJjcAH 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
☆ VM + ASM を書いた (C#, DX) * x86 ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ
☆ VM + ASM を書いた (C#, DX) * x86 ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
799デフォルトの名無しさん (ワッチョイ fa7f-pv2R)
2020/08/04(火) 20:23:21.05ID:/v2mWUPK0 2016使ってるけど、いつの間にかSORTBYとかFILTERとか使えるようになってるのな。
800デフォルトの名無しさん (ワッチョイ fa42-8P+6)
2020/08/04(火) 20:58:22.81ID:ExHQkzho0 そもそも乱数に偏りがあろうと応募者が狙った並びでない時点で機会は公平だけどな
801デフォルトの名無しさん (ワッチョイ 99da-xE3T)
2020/08/04(火) 21:08:04.57ID:HcyQwD6H0 決まった番号がでるとわかっているからその番号に身内を入れて置けるわな
802デフォルトの名無しさん (アウアウウー Sa55-TvuW)
2020/08/05(水) 07:02:57.17ID:JB7qoIQVa >>797
偏差値低くね?
偏差値低くね?
803デフォルトの名無しさん (ワッチョイ 99da-e++8)
2020/08/06(木) 11:58:31.88ID:ix60cQMV0 乱数で疑似データをつくるとばらつきが均等になるから偏差を求めたときに不自然に広がるよね
804デフォルトの名無しさん (ワッチョイ ebcc-e++8)
2020/08/06(木) 13:28:48.79ID:LOZz8PJN0 乱数2つ使うといいぞ
805デフォルトの名無しさん (バットンキン MM2d-6wop)
2020/08/07(金) 19:45:16.94ID:Gk+vywdrM スレチだったらスマソだけど、excelのスピル?のせいで、ver違うexcel間で共有してたファイルが勝手に配列やら@やら数式が変換されてバグってんだけど、これ無効にできないの?
806デフォルトの名無しさん (アメ MM75-cUya)
2020/08/07(金) 20:09:47.44ID:l761nrW2M807デフォルトの名無しさん (ワッチョイ eb63-FoHg)
2020/08/07(金) 20:45:55.98ID:Ojdjt83K0 できないの?
808デフォルトの名無しさん (ワッチョイ 134f-RXr9)
2020/08/07(金) 20:47:34.25ID:SPZQdxGT0809デフォルトの名無しさん (バットンキン MM2d-6wop)
2020/08/07(金) 21:11:23.51ID:Gk+vywdrM え・・・まじで無理なん?
おわってんな
おわってんな
810デフォルトの名無しさん (ワッチョイ 6192-tlsv)
2020/08/07(金) 21:38:31.44ID:CC9P+z2z0 最近の機能の不具合だから知らねってことやろ
811デフォルトの名無しさん (ワッチョイ 0101-FoHg)
2020/08/07(金) 22:08:09.38ID:TxGR6Whm0 旧バージョンの配列式に勝手に@が付くのは仕様じゃねえの
旧verの {=a1:a3} が新verでは =@a1:a3 に変換される
新verのスピル式 =a1:a3 は旧verでは {=a1:a3} に
VBA的にはFormulaプロパティとFormula2プロパティを使い分けることによって新旧verどっちにするかを指定できる
旧verの {=a1:a3} が新verでは =@a1:a3 に変換される
新verのスピル式 =a1:a3 は旧verでは {=a1:a3} に
VBA的にはFormulaプロパティとFormula2プロパティを使い分けることによって新旧verどっちにするかを指定できる
812デフォルトの名無しさん (JP 0Ha3-3Z56)
2020/08/08(土) 13:26:33.40ID:LUeSHsN4H パーフェクトExcelVBAの初版本の正誤表とサンプルコードってどこかにありませんか?
813デフォルトの名無しさん (ワッチョイ 297c-2X+j)
2020/08/08(土) 14:27:44.52ID:KW6vxjpw0 出版社に聞いたら
814デフォルトの名無しさん (ワッチョイ 311a-3Z56)
2020/08/08(土) 15:27:34.88ID:QEOcQPDQ0 >>813
たし蟹
たし蟹
815デフォルトの名無しさん (ワッチョイ 6961-5k5c)
2020/08/09(日) 10:06:54.07ID:IyDcd9Ex0 コレクションにaddしたシートだけを一発で選択するにはどうしたら良いですか?
816デフォルトの名無しさん (ワッチョイ 59ce-IIsV)
2020/08/09(日) 10:50:04.26ID:Krh2xN+N0 >>815
addしたあとから調べる方法はないからaddする時に変数に覚えておくしかない
addしたあとから調べる方法はないからaddする時に変数に覚えておくしかない
817デフォルトの名無しさん (ワッチョイ 13ad-e++8)
2020/08/09(日) 13:28:26.53ID:w6SyFcxE0 セルA1~A5に1~5が入っていて、5個のaverage=3ですが、
1) 複数の連続セルを選択することで同じ動作をするfunction
2) function 自作平均値(セルを1個指定する as ???, 上のセル数 as byte, 下のセル数 as byte) as double
で、=自作平均値(A3, 2, 2) としたら同じ結果を得る関数
ってそれぞれどう書けばよいでしょうか。
値を直接入力する予定はなく、セルアドレスを取得できれよいかと思いますが、
方法がわかりません。
参考urlでかまいませんので教えてください。
1) 複数の連続セルを選択することで同じ動作をするfunction
2) function 自作平均値(セルを1個指定する as ???, 上のセル数 as byte, 下のセル数 as byte) as double
で、=自作平均値(A3, 2, 2) としたら同じ結果を得る関数
ってそれぞれどう書けばよいでしょうか。
値を直接入力する予定はなく、セルアドレスを取得できれよいかと思いますが、
方法がわかりません。
参考urlでかまいませんので教えてください。
818デフォルトの名無しさん (ワッチョイ 59ce-IIsV)
2020/08/09(日) 13:55:27.58ID:Krh2xN+N0 >>817
自作の関数の中で、ワークシート関数とまったく同じ結果が欲しいなら、Application.WorkSheetfunctionを使うのが一番確実
参考サイトに基本的な作り方は書いてあるから、計算式の部分だけ自分で作り直せばいい
https://kokodane.com/tec3_3.htm
自作の関数の中で、ワークシート関数とまったく同じ結果が欲しいなら、Application.WorkSheetfunctionを使うのが一番確実
参考サイトに基本的な作り方は書いてあるから、計算式の部分だけ自分で作り直せばいい
https://kokodane.com/tec3_3.htm
819デフォルトの名無しさん (ワッチョイ 311a-3Z56)
2020/08/09(日) 21:56:13.30ID:KZ1iPV5I0 ITに疎いクライアントのために
デモ用のVBAが動作しているところ録画して見せたいのですが
そのために向いているツールとかありますか?
デモ用のVBAが動作しているところ録画して見せたいのですが
そのために向いているツールとかありますか?
820デフォルトの名無しさん (ワッチョイ 6192-tlsv)
2020/08/09(日) 22:02:16.81ID:CWT5uO5H0 まずは標準のステップ記録ツールでダメな点を書けよ
821デフォルトの名無しさん (ワッチョイ 1b8c-Ea0s)
2020/08/09(日) 23:01:18.40ID:1ZjA1+PB0 >>817
Function 自作平均値(セルを1個指定するAs Range, 上のセル数, 下のセル数)
自作平均値 = Application.WorksheetFunction.Average(セルを1個指定する.Offset(-上のセル数).Resize(上のセル数 + 下のセル数 + 1).Value)
End Function
文章が意味不明なんだけどこんな感じでいいの?
Function 自作平均値(セルを1個指定するAs Range, 上のセル数, 下のセル数)
自作平均値 = Application.WorksheetFunction.Average(セルを1個指定する.Offset(-上のセル数).Resize(上のセル数 + 下のセル数 + 1).Value)
End Function
文章が意味不明なんだけどこんな感じでいいの?
822デフォルトの名無しさん (ワッチョイ 59ce-IIsV)
2020/08/10(月) 01:01:45.89ID:rZUUjilg0 >>819
Excelの画面をビデオ録画する操作はExcelを起動してから田+Alt+R
ただしVBEのウィンドウは開いても重ねても録画されないので、ワークシート上にマクロの起動ボタンを置いておく必要がある
Excelの画面をビデオ録画する操作はExcelを起動してから田+Alt+R
ただしVBEのウィンドウは開いても重ねても録画されないので、ワークシート上にマクロの起動ボタンを置いておく必要がある
823デフォルトの名無しさん (ワッチョイ d101-Piju)
2020/08/10(月) 06:44:41.63ID:2p1s3ccJ0824デフォルトの名無しさん (ワッチョイ a15f-3YTp)
2020/08/10(月) 08:03:08.52ID:RlCz4Cin0 822で解決してる内容を間違って紹介するの巻
825デフォルトの名無しさん (ブーイモ MM85-tlsv)
2020/08/10(月) 08:12:31.43ID:3XgF7vK3M >>820の時点で普通は調べりゃわかる
826デフォルトの名無しさん (ワッチョイ 8191-hkmR)
2020/08/10(月) 08:49:14.88ID:BA9+NJPC0 >>815
そういう時はDictionaryにすれば良いんでね?
そういう時はDictionaryにすれば良いんでね?
827デフォルトの名無しさん (ワッチョイ 8191-hkmR)
2020/08/10(月) 08:51:12.59ID:BA9+NJPC0 >>819
そのVBAを自動実行するVBAを書く。
そのVBAを自動実行するVBAを書く。
828デフォルトの名無しさん (アウアウウー Sa55-h0ig)
2020/08/11(火) 02:22:17.18ID:w/eGi/vSa VBAの知識は全く無いけど無駄な事は少しでも省きたい
そこで質問なのですが、複数の結合されたセルの値を一括でクリアしたい時
Range(“A1”).MergeArea.ClearContents
Range(“A2”).MergeArea.ClearContents
Range(“A3”).MergeArea.ClearContents
Range(“A4”).MergeArea.ClearContents
ひたすら続く
これを短くするにはどうすれば良いでしょうか?
そこで質問なのですが、複数の結合されたセルの値を一括でクリアしたい時
Range(“A1”).MergeArea.ClearContents
Range(“A2”).MergeArea.ClearContents
Range(“A3”).MergeArea.ClearContents
Range(“A4”).MergeArea.ClearContents
ひたすら続く
これを短くするにはどうすれば良いでしょうか?
829デフォルトの名無しさん (ワッチョイ eb63-QZCj)
2020/08/11(火) 02:42:12.83ID:biGjq8v+0 A1:A1000
830デフォルトの名無しさん (アウアウウー Sa55-h0ig)
2020/08/11(火) 03:03:48.27ID:w/eGi/vSa あーっとすみません
AはBと連結していますのでそれぞれが横に連結しています
AはBと連結していますのでそれぞれが横に連結しています
831デフォルトの名無しさん (ワッチョイ eb8e-bBGy)
2020/08/11(火) 03:10:45.62ID:iwyIkneF0 >>830
死ね
死ね
832デフォルトの名無しさん (ワッチョイ 59ce-IIsV)
2020/08/11(火) 03:24:29.64ID:gr6gl0bw0 >>828
まずセルの結合が無駄の元だから禁止するのが一番の早道
まずセルの結合が無駄の元だから禁止するのが一番の早道
833デフォルトの名無しさん (アウアウウー Sa55-h0ig)
2020/08/11(火) 03:32:11.78ID:w/eGi/vSa834デフォルトの名無しさん (ワッチョイ 0101-vCTi)
2020/08/11(火) 07:15:12.76ID:MYNVwvse0 悪いけどこの程度のこと質問するようじゃ手でやったほうが早いと思う
該当セルを全部選択して右クリックから値のクリア
該当セルを全部選択して右クリックから値のクリア
835デフォルトの名無しさん (ワッチョイ 895f-gCeJ)
2020/08/11(火) 07:29:46.25ID:QzKTaZ840 >>834
それをマクロの記録で記録するのが一番楽だわな
それをマクロの記録で記録するのが一番楽だわな
836デフォルトの名無しさん (ワッチョイ 0101-zaql)
2020/08/11(火) 09:13:15.51ID:MYNVwvse0 >>835
この程度なら、毎回やるにしてもマクロ使わずに手でやって余裕でできるレベルだろ
この程度なら、毎回やるにしてもマクロ使わずに手でやって余裕でできるレベルだろ
837デフォルトの名無しさん (ワッチョイ 9b02-e++8)
2020/08/11(火) 09:43:23.03ID:Y2BcIsaJ0 できるかできないかじゃないのがわからない奴
838デフォルトの名無しさん (アウアウウー Sa55-g1pd)
2020/08/11(火) 10:26:55.02ID:XBdR516ja839デフォルトの名無しさん (ワッチョイ 297c-2X+j)
2020/08/11(火) 12:32:13.53ID:Tr96IgUh0 range("a1:最後").value=emptyじゃだめなのか
840デフォルトの名無しさん (ワッチョイ 9b90-e++8)
2020/08/11(火) 12:34:29.17ID:LWJewwPf0 >>828
Dim i As Long
Dim lngMaxRow As Long
'/// 最終行取得
lngMaxRow = ActiveSheet.Range("A65000").End(xlUp).Row
'/// ループ処理
For i = 1 To lngMaxRow
ActiveSheet.Range("A" & i).MergeArea.ClearContents
Next i
Dim i As Long
Dim lngMaxRow As Long
'/// 最終行取得
lngMaxRow = ActiveSheet.Range("A65000").End(xlUp).Row
'/// ループ処理
For i = 1 To lngMaxRow
ActiveSheet.Range("A" & i).MergeArea.ClearContents
Next i
841デフォルトの名無しさん (スプッッ Sda3-IIsV)
2020/08/11(火) 14:42:39.58ID:GML8Ehqkd .Clear と .ClearContents と .Value=Empty の違いがわからん
これをマウスやキーボードで再現する方法も
たとえばセルを選択してDeleteキーはどれに相当?
これをマウスやキーボードで再現する方法も
たとえばセルを選択してDeleteキーはどれに相当?
842デフォルトの名無しさん (ワッチョイ 1302-2X+j)
2020/08/11(火) 15:03:15.53ID:3p+RdAeo0 Clearはセルに入力されてる数式や値、そして設定されてる書式もすべて消す
.ClearContents は数式と値のみクリア、書式は残る
.Value=Emptyはニュアンスが逆で"何も無いを入力"、つまり消す。.ClearContentsと同じ
deleteキーは.ClearContentsや.Value=Emptyと同じ
.ClearContents は数式と値のみクリア、書式は残る
.Value=Emptyはニュアンスが逆で"何も無いを入力"、つまり消す。.ClearContentsと同じ
deleteキーは.ClearContentsや.Value=Emptyと同じ
843デフォルトの名無しさん (ブーイモ MM85-HICl)
2020/08/11(火) 15:15:55.64ID:KT452e/aM 不規則な結合セルがあると .MergeArea.ClearContentsはエラーになるけど .Value = Emptyなら動くから>>828はRange("A:A").Value = Emptyの一行で解決ってこと
844デフォルトの名無しさん (ワッチョイ 9bf7-ADi0)
2020/08/11(火) 15:48:36.99ID:QMl7gTyj0 foreachやればええやん
845デフォルトの名無しさん (ワッチョイ 2e7b-PxzN)
2020/08/12(水) 02:04:20.40ID:ArSORnRx0 >>834-844 ありがとうございます!
皆さんが言うように全くの知識ゼロですが色々検索してなんとか思った通りのボタンが完成しました。
しかし全角やらスペースやら分かり辛いプログラムって難しいですね...
皆さんが言うように全くの知識ゼロですが色々検索してなんとか思った通りのボタンが完成しました。
しかし全角やらスペースやら分かり辛いプログラムって難しいですね...
846デフォルトの名無しさん (ワッチョイ ade6-p0wA)
2020/08/12(水) 20:55:54.61ID:qkNQ+uZ00 赤線先生が手取り足取り教えてくれるのに何が不満だと申すのかこのガキは
847デフォルトの名無しさん (ワッチョイ 4549-p5K4)
2020/08/12(水) 23:02:53.31ID:Akz/zcS80 n行ごとにデータを拾って少し文字列等を足してからほかのシートに貼り付ける、
という作業を現在For文でやっています。行数が多いと多少時間がかかることも
あるので、配列でできないかと思い試してみたのですが、「n行ごと」の部分が
うまくいきません
Dim tmpArr(), tmp As Variant
Dim rowIndex, colIndex As Long
tmpArr = Worksheets(1).Range("A3:C101").Value
For rowIndex = 1 To UBound(tmpArr) - 2 Step 3
For colIndex = 1 To UBound(tmpArr, 2)
tmp = tmpArr(rowIndex, colIndex) & "結合データ"
tmpArr(rowIndex, colIndex) = tmp
Next
Next
Worksheets(2).Range("A3:C35").Value = tmpArr
上記の場合3行ごとに元の値に「結合データ」という文字列を足すことはできて
いるのですが、貼り付け先のシートに全行貼り付いてしまいます
3行ごとの場合に要らない2行目、3行目を除外して
Sheet1 1行目→Sheet2 1行目、Sheet1 4行目→Sheet2 2行目…
というように貼り付けるにはどこを変更したらいいでしょうか
貼り付けたあと要らない行を削除してみたのですが、却って時間がかかって
しまったため、それ以外の解決方法があれば教えてください、よろしくお願いします
という作業を現在For文でやっています。行数が多いと多少時間がかかることも
あるので、配列でできないかと思い試してみたのですが、「n行ごと」の部分が
うまくいきません
Dim tmpArr(), tmp As Variant
Dim rowIndex, colIndex As Long
tmpArr = Worksheets(1).Range("A3:C101").Value
For rowIndex = 1 To UBound(tmpArr) - 2 Step 3
For colIndex = 1 To UBound(tmpArr, 2)
tmp = tmpArr(rowIndex, colIndex) & "結合データ"
tmpArr(rowIndex, colIndex) = tmp
Next
Next
Worksheets(2).Range("A3:C35").Value = tmpArr
上記の場合3行ごとに元の値に「結合データ」という文字列を足すことはできて
いるのですが、貼り付け先のシートに全行貼り付いてしまいます
3行ごとの場合に要らない2行目、3行目を除外して
Sheet1 1行目→Sheet2 1行目、Sheet1 4行目→Sheet2 2行目…
というように貼り付けるにはどこを変更したらいいでしょうか
貼り付けたあと要らない行を削除してみたのですが、却って時間がかかって
しまったため、それ以外の解決方法があれば教えてください、よろしくお願いします
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【ローソン】ロゴの「L」で誤解生んだコーヒーカップ、デザイン変更へ 在庫使い切る3か月後にリニューアル [ぐれ★]
- 【高市早苗】バス会社、中国からのキャンセルで12月で2000万円~3000万円の損失へ [115996789]
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- かしこいワンコっていうVtuberの子知ってる?
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
- 死にてえ奴よく聞け、5000円握りしめてテントと寝袋とランタン買って部屋で広げて寝てみろ [419111196]
- ジャーナリストがテレビで解説「台湾問題は高市総理から言ったのではなく、立憲民主が日本の対応可能能力を暴こうとしたから」 [359572271]
