!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:uDfmpksE0778デフォルトの名無しさん (ワッチョイ 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行目…
というように貼り付けるにはどこを変更したらいいでしょうか
貼り付けたあと要らない行を削除してみたのですが、却って時間がかかって
しまったため、それ以外の解決方法があれば教えてください、よろしくお願いします
848デフォルトの名無しさん (ワッチョイ 623d-KAoe)
2020/08/12(水) 23:09:52.81ID:J7mAx2fT0 >>847
tmparrの要素数見てみ
もう1つ別に、貼り付け用のVariant型配列用意して新しく格納していかないとそりゃ空白行できるよ
それと、stepよりmodで条件分岐スキップさせる方がスマートじゃないかい
tmparrの要素数見てみ
もう1つ別に、貼り付け用のVariant型配列用意して新しく格納していかないとそりゃ空白行できるよ
それと、stepよりmodで条件分岐スキップさせる方がスマートじゃないかい
849デフォルトの名無しさん (ワッチョイ 45ce-p0wA)
2020/08/12(水) 23:38:22.31ID:neehvUDc0 >>847
こういうこと
あと、Dimの書き方もこうしないとだめ
Sub Macro1()
Dim tmpArr() As Variant, tmp As Variant
Dim rowIndex As Long, colIndex As Long
Dim arrIndex As Long ' 配列用のインデックス
tmpArr = Worksheets(1).Range("A3:C101").Value
arrIndex = 0
For rowIndex = 1 To UBound(tmpArr) - 2 Step 3 ' セルアドレスは3ずつ増やす
For colIndex = 1 To UBound(tmpArr, 2)
tmp = tmpArr(rowIndex, colIndex) & "結合データ"
tmpArr(arrIndex, colIndex) = tmp
Next
arrIndex = arrIndex + 1 ' 配列のインデックスは1ずつ増やす
Next
Worksheets(2).Range("A3:C35").Value = tmpArr
End Sub
こういうこと
あと、Dimの書き方もこうしないとだめ
Sub Macro1()
Dim tmpArr() As Variant, tmp As Variant
Dim rowIndex As Long, colIndex As Long
Dim arrIndex As Long ' 配列用のインデックス
tmpArr = Worksheets(1).Range("A3:C101").Value
arrIndex = 0
For rowIndex = 1 To UBound(tmpArr) - 2 Step 3 ' セルアドレスは3ずつ増やす
For colIndex = 1 To UBound(tmpArr, 2)
tmp = tmpArr(rowIndex, colIndex) & "結合データ"
tmpArr(arrIndex, colIndex) = tmp
Next
arrIndex = arrIndex + 1 ' 配列のインデックスは1ずつ増やす
Next
Worksheets(2).Range("A3:C35").Value = tmpArr
End Sub
850デフォルトの名無しさん (アウアウウー Saa5-KAoe)
2020/08/13(木) 00:14:44.45ID:6VU/YWxoa851デフォルトの名無しさん (ワッチョイ 45ce-p0wA)
2020/08/13(木) 00:25:56.44ID:87HjPNaJ0 >>850
そういう時はセル範囲を変数にして、どっちかのインデックスを3で割るか掛けるかすればいいんだよ
それならメンテは一箇所で済む
データの範囲をxlUpとかUsedRangeなどで調べたりテーブル化すれば全自動にもできる
そういう時はセル範囲を変数にして、どっちかのインデックスを3で割るか掛けるかすればいいんだよ
それならメンテは一箇所で済む
データの範囲をxlUpとかUsedRangeなどで調べたりテーブル化すれば全自動にもできる
852デフォルトの名無しさん (ワッチョイ 4549-p5K4)
2020/08/13(木) 01:36:11.66ID:cxZ8EfEa0 >>849
ありがとうございます
最初インデックスが有効範囲にないとエラーがでたので「arrIndex = 0」を
「arrIndex = 1」に変えたらできました
配列なので0から始まるということなのかと思ったんですが、1にしても
大丈夫なんでしょうか?出力した結果はForのものと同じだったので
貼り付け後に1行ずれるということはなさそうなんですが…
しかし確かに速いですね、配列
データを5000行×3列にしてテストしたら
For 約2.7秒
配列 約0.03秒
といった感じでした
>>850,851
コピー元のセル範囲は変数にして見出し行引いてnで割ったりして貼り付け先の
範囲を出してます
今回は決まった数字の方がいいかなと思って99行を3行ごとで33行、みたいに
してみました
ありがとうございます
最初インデックスが有効範囲にないとエラーがでたので「arrIndex = 0」を
「arrIndex = 1」に変えたらできました
配列なので0から始まるということなのかと思ったんですが、1にしても
大丈夫なんでしょうか?出力した結果はForのものと同じだったので
貼り付け後に1行ずれるということはなさそうなんですが…
しかし確かに速いですね、配列
データを5000行×3列にしてテストしたら
For 約2.7秒
配列 約0.03秒
といった感じでした
>>850,851
コピー元のセル範囲は変数にして見出し行引いてnで割ったりして貼り付け先の
範囲を出してます
今回は決まった数字の方がいいかなと思って99行を3行ごとで33行、みたいに
してみました
853デフォルトの名無しさん (ワッチョイ ad7c-s47K)
2020/08/13(木) 01:59:57.87ID:KWfn8cHZ0 >>852
tmpArrにセル内容入れた時のインデックスを確認すればわかる
tmpArrにセル内容入れた時のインデックスを確認すればわかる
854デフォルトの名無しさん (ワッチョイ 451c-p0wA)
2020/08/13(木) 11:07:02.86ID:rrpNLQgi0 環境
windows 10 64bit
office 365 64bit
string型変数strにスペースを埋める単純なコードです。
Sub test()
Dim num_i As Integer
Dim num_l As Long
Dim num_ll As LongPtr
Dim str As String
Debug.Print "integer"; Len(num_i); TypeName(num_i)
Debug.Print "long"; Len(num_l); TypeName(num_l)
Debug.Print "longptr"; Len(num_ll); TypeName(num_ll)
num_i = 16: num_l = 16: num_ll = 16
str = Space(num_i): Debug.Print ">>"; str; "<<"
str = Space(num_l): Debug.Print ">>"; str; "<<"
''動かない
'str = Space(num_ll): Debug.Print ">>"; str; "<<"
''動く
str = Space(CLng(num_ll)): Debug.Print ">>"; str; "<<"
End Sub
このように64bitに対応していない組み込み関数って結構あるんのだろうか・・・
いつからか忘れたけど、 64bit推奨しているなら、これぐらい対応しろよ、毎糞がぁぁあ
excelの64bit環境って現状こんなものなの?
windows 10 64bit
office 365 64bit
string型変数strにスペースを埋める単純なコードです。
Sub test()
Dim num_i As Integer
Dim num_l As Long
Dim num_ll As LongPtr
Dim str As String
Debug.Print "integer"; Len(num_i); TypeName(num_i)
Debug.Print "long"; Len(num_l); TypeName(num_l)
Debug.Print "longptr"; Len(num_ll); TypeName(num_ll)
num_i = 16: num_l = 16: num_ll = 16
str = Space(num_i): Debug.Print ">>"; str; "<<"
str = Space(num_l): Debug.Print ">>"; str; "<<"
''動かない
'str = Space(num_ll): Debug.Print ">>"; str; "<<"
''動く
str = Space(CLng(num_ll)): Debug.Print ">>"; str; "<<"
End Sub
このように64bitに対応していない組み込み関数って結構あるんのだろうか・・・
いつからか忘れたけど、 64bit推奨しているなら、これぐらい対応しろよ、毎糞がぁぁあ
excelの64bit環境って現状こんなものなの?
855デフォルトの名無しさん (ワッチョイ 4549-p5K4)
2020/08/13(木) 11:30:36.17ID:cxZ8EfEa0 >>853
インデックスを確認したところ
rowIndex 1→1→1→4→4→4→7→7→7
colIndex 1→2→3→1→2→3→1→2→3
arrIndex 1→1→1→2→2→2→3→3→3
というように変化していきましたので大丈夫そうです、ありがとうございました
インデックスを確認したところ
rowIndex 1→1→1→4→4→4→7→7→7
colIndex 1→2→3→1→2→3→1→2→3
arrIndex 1→1→1→2→2→2→3→3→3
というように変化していきましたので大丈夫そうです、ありがとうございました
856デフォルトの名無しさん (ワッチョイ e5da-p5K4)
2020/08/13(木) 11:34:45.35ID:25tyhxYJ0 コンパイルエラーじゃねーか、何を問題にしているのかわからん
857デフォルトの名無しさん (ワッチョイ c22f-178q)
2020/08/13(木) 12:50:45.70ID:2SQEG+lQ0 試してないから知らんけど
64ビット長の文字列とかサポートされてないから当然だと思うけどな
つか今のEXCELついに64ビットが規定になったのか
64ビット長の文字列とかサポートされてないから当然だと思うけどな
つか今のEXCELついに64ビットが規定になったのか
858デフォルトの名無しさん (ワッチョイ ad7c-s47K)
2020/08/13(木) 13:00:55.28ID:KWfn8cHZ0 >>855
いや、なんでインデックス0だとエラーになるかって話・・・
いや、なんでインデックス0だとエラーになるかって話・・・
859デフォルトの名無しさん (ワッチョイ 4549-p5K4)
2020/08/13(木) 14:08:49.69ID:cxZ8EfEa0 >>858
あ、そっちでしたか
エラーが出た状態のそれぞれのインデックスは
rowIndex 1
colIndex 1
arrIndex 0
でしたので、
tmpArr(arrIndex, colIndex) = tmp
のところが
tmpArr(0, 1) = tmp
になってエラー、ですかね?
あ、そっちでしたか
エラーが出た状態のそれぞれのインデックスは
rowIndex 1
colIndex 1
arrIndex 0
でしたので、
tmpArr(arrIndex, colIndex) = tmp
のところが
tmpArr(0, 1) = tmp
になってエラー、ですかね?
860デフォルトの名無しさん (ワッチョイ ad7c-s47K)
2020/08/13(木) 14:16:56.76ID:KWfn8cHZ0 >>859
tmpArrにインデックス0は存在しないのに指定するからエラーが出ていて、セル範囲を代入した時は1から始まることを知らなくても変数の状態をチェックすればすぐわかることだが、もしかしてローカルウィンドウとかを知らないパターン
tmpArrにインデックス0は存在しないのに指定するからエラーが出ていて、セル範囲を代入した時は1から始まることを知らなくても変数の状態をチェックすればすぐわかることだが、もしかしてローカルウィンドウとかを知らないパターン
861デフォルトの名無しさん (ワッチョイ 4549-p5K4)
2020/08/13(木) 14:35:55.00ID:cxZ8EfEa0 >>860
あんまり使いこなせてはいないですがローカルウィンドウは表示させています
849さんが教えてくれたコードの中でarrIndexを「0」に指定しているのにはなにか
理由があるんじゃないかと思ったんですが、書き間違いとかでしょうか?
あんまり使いこなせてはいないですがローカルウィンドウは表示させています
849さんが教えてくれたコードの中でarrIndexを「0」に指定しているのにはなにか
理由があるんじゃないかと思ったんですが、書き間違いとかでしょうか?
862デフォルトの名無しさん (ワッチョイ ad7c-s47K)
2020/08/13(木) 14:49:25.52ID:KWfn8cHZ0 >>861
意図は知らない
意図は知らない
863デフォルトの名無しさん (ワッチョイ e5da-p5K4)
2020/08/13(木) 18:33:06.86ID:25tyhxYJ0 >>861
そういうのスルーできないとこの先進まんよ
そういうのスルーできないとこの先進まんよ
864デフォルトの名無しさん (ワッチョイ 2e10-s47K)
2020/08/14(金) 07:43:46.87ID:whfJUs+50 VLOOKUPについての質問なんですが、
検索キー 検索範囲1 検索範囲2 産地
りんご りんご ぶどう 岡山産
みかん りんご 岡山産
いちご もも 岡山産
りんご ぶどう 山梨産
みかん なし 山梨産
いちご りんご 山梨産
りんごから別セルの検索範囲1を見た後に検索範囲2を見にいって産地の戻り値を得る関数を作りたいのですが、
検索キーのヒットで産地が重複した場合は表示を1度だけにして、期待する結果として「岡山県 山梨県」とだけ得られるような関数を作りたいです
VLOOKUPを&で繋げると「岡山県岡山県」と列の一番初めの戻り値しか得られません
VLOOKUP以外でもやり方があれば教えて頂ければ助かります
検索キー 検索範囲1 検索範囲2 産地
りんご りんご ぶどう 岡山産
みかん りんご 岡山産
いちご もも 岡山産
りんご ぶどう 山梨産
みかん なし 山梨産
いちご りんご 山梨産
りんごから別セルの検索範囲1を見た後に検索範囲2を見にいって産地の戻り値を得る関数を作りたいのですが、
検索キーのヒットで産地が重複した場合は表示を1度だけにして、期待する結果として「岡山県 山梨県」とだけ得られるような関数を作りたいです
VLOOKUPを&で繋げると「岡山県岡山県」と列の一番初めの戻り値しか得られません
VLOOKUP以外でもやり方があれば教えて頂ければ助かります
865デフォルトの名無しさん (ワッチョイ 4290-p5K4)
2020/08/14(金) 11:35:06.45ID:DbBU1lOD0 >>864 マクロ作りました。
最大100件までヒット可能です。
長くなって申し訳ありません。
ご参考までに。(1/3)
Option Explicit
'/// 変数定義
Public j As Long 'ヒット件数
Public strArray(99) As String 'ヒットした産地の配列
Sub Main()
Call 初期化
Call 検索処理("B", 2)
Call 検索処理("C", 1)
Call メッセージ
End Sub
最大100件までヒット可能です。
長くなって申し訳ありません。
ご参考までに。(1/3)
Option Explicit
'/// 変数定義
Public j As Long 'ヒット件数
Public strArray(99) As String 'ヒットした産地の配列
Sub Main()
Call 初期化
Call 検索処理("B", 2)
Call 検索処理("C", 1)
Call メッセージ
End Sub
866デフォルトの名無しさん (ワッチョイ 4290-p5K4)
2020/08/14(金) 11:35:39.43ID:DbBU1lOD0 Sub 初期化() '///グローバル変数の初期化 (2/3)
'/// 変数定義
Dim i As Long 'カウンタ
j = 0
For i = 0 To 99
strArray(i) = ""
Next i
End Sub
Sub 検索処理(pCol As String, pMovNum As Long)
'/// 変数定義
Dim i As Long 'カウンタ
Dim lngMaxRow As Long '処理数
Dim strKey As String '検索値
Dim strSanchi As String 'ワーク変数
'/// キー
strKey = ActiveSheet.Range("A2").Value
'/// 処理数
lngMaxRow = ActiveSheet.Range("B1000").End(xlUp).Row
'/// ループ
For i = 2 To lngMaxRow
If strKey = ActiveSheet.Range(pCol & i).Value Then
strSanchi = ActiveSheet.Range(pCol & i).Offset(0, pMovNum).Value
If 重複チェック(strSanchi, strArray()) = False Then
strArray(j) = strSanchi
j = j + 1
End If
End If
Next i
End Sub
'/// 変数定義
Dim i As Long 'カウンタ
j = 0
For i = 0 To 99
strArray(i) = ""
Next i
End Sub
Sub 検索処理(pCol As String, pMovNum As Long)
'/// 変数定義
Dim i As Long 'カウンタ
Dim lngMaxRow As Long '処理数
Dim strKey As String '検索値
Dim strSanchi As String 'ワーク変数
'/// キー
strKey = ActiveSheet.Range("A2").Value
'/// 処理数
lngMaxRow = ActiveSheet.Range("B1000").End(xlUp).Row
'/// ループ
For i = 2 To lngMaxRow
If strKey = ActiveSheet.Range(pCol & i).Value Then
strSanchi = ActiveSheet.Range(pCol & i).Offset(0, pMovNum).Value
If 重複チェック(strSanchi, strArray()) = False Then
strArray(j) = strSanchi
j = j + 1
End If
End If
Next i
End Sub
867デフォルトの名無しさん (ワッチョイ 4290-p5K4)
2020/08/14(金) 11:36:01.63ID:DbBU1lOD0 Function 重複チェック(pSanchi As String, pArray() As String) As Boolean(3/3)
'/// 変数定義
Dim i As Long 'カウンタ
'/// ループ
For i = 0 To 99
If pSanchi = pArray(i) Then
重複チェック = True
Exit Function
End If
Next i
重複チェック = False
End Function
Sub メッセージ()
'/// 変数定義
Dim i As Long 'カウンタ
Dim strAnswer As String 'ワーク変数
strAnswer = strArray(0)
'/// メッセージ出力
For i = 1 To j
If strArray(i) <> "" Then
strAnswer = strAnswer & "," & strArray(i)
End If
Next i
'/// 1件でもあれば表示
If j > 0 Then
MsgBox (strAnswer)
End If
End Sub
'/// 変数定義
Dim i As Long 'カウンタ
'/// ループ
For i = 0 To 99
If pSanchi = pArray(i) Then
重複チェック = True
Exit Function
End If
Next i
重複チェック = False
End Function
Sub メッセージ()
'/// 変数定義
Dim i As Long 'カウンタ
Dim strAnswer As String 'ワーク変数
strAnswer = strArray(0)
'/// メッセージ出力
For i = 1 To j
If strArray(i) <> "" Then
strAnswer = strAnswer & "," & strArray(i)
End If
Next i
'/// 1件でもあれば表示
If j > 0 Then
MsgBox (strAnswer)
End If
End Sub
868デフォルトの名無しさん (ワッチョイ ad7c-s47K)
2020/08/14(金) 12:26:16.36ID:RMq/G2m80 Dim obj As Object
Dim rng As Range
Set obj = CreateObject("Scripting.Dictionary")
For Each rng In Range(検索範囲)
If rng.Value = Range("a2").Value Then
With Cells(rng.Row, "d")
If obj.exists(.Value) = False Then obj.Add .Value, 0
End With
End If
Next
Range("e1").Resize(obj.Count).Value = WorksheetFunction.Transpose(obj.keys)
Set obj = Nothing
Dim rng As Range
Set obj = CreateObject("Scripting.Dictionary")
For Each rng In Range(検索範囲)
If rng.Value = Range("a2").Value Then
With Cells(rng.Row, "d")
If obj.exists(.Value) = False Then obj.Add .Value, 0
End With
End If
Next
Range("e1").Resize(obj.Count).Value = WorksheetFunction.Transpose(obj.keys)
Set obj = Nothing
870デフォルトの名無しさん (ワッチョイ 6eda-p0wA)
2020/08/16(日) 00:23:38.07ID:oP+sOQXV0 >>864
構造体使えば簡単に作れそうだけどね。
構造体使えば簡単に作れそうだけどね。
871デフォルトの名無しさん (ワッチョイ e5da-p5K4)
2020/08/16(日) 13:39:49.06ID:6OTbxtgn0 質問しないで自力でできるようになるのがまず先だろう
872デフォルトの名無しさん (ワッチョイ 9f40-JHA7)
2020/08/19(水) 20:44:10.60ID:1ghAy1sC0 スレ全否定で草
873デフォルトの名無しさん (ワッチョイ 7fd3-ri+I)
2020/08/20(木) 01:09:34.68ID:Qa4rAQro0 シート1のプルダウンから選択した結果(テキスト)を
シート2の任意のセルに表示させるにはどうすればいいですか?
シート2の任意のセルに表示させるにはどうすればいいですか?
874デフォルトの名無しさん (ワッチョイ 7f42-KCZZ)
2020/08/20(木) 07:05:04.54ID:UH//ZFwI0 リンクするセルに指定しておけば
875デフォルトの名無しさん (スプッッ Sd1f-POXI)
2020/08/24(月) 18:59:52.50ID:ga12x2Hwd A列には数字を手入力
B列には●があったりなかったり
B列に●がある場合A列に数字を(例えば100)入力するとメッセージボックス?がでて
「●があるから入力しちゃ駄目よ!どうしても"100"を入力したいの!?」
「OK」「キャンセル」
みたいにしたいんですがどーすればいいですか?
B列には●があったりなかったり
B列に●がある場合A列に数字を(例えば100)入力するとメッセージボックス?がでて
「●があるから入力しちゃ駄目よ!どうしても"100"を入力したいの!?」
「OK」「キャンセル」
みたいにしたいんですがどーすればいいですか?
876デフォルトの名無しさん (ワッチョイ ff02-YpYZ)
2020/08/24(月) 19:07:40.74ID:k+YcXwpu0 Worksheet_Changeイベントを使えばいいです
877デフォルトの名無しさん (ワッチョイ 1f7c-u2+K)
2020/08/24(月) 19:26:54.83ID:w4ZB1tmF0 >>875
データの入力規則のエラーメッセージ
データの入力規則のエラーメッセージ
878デフォルトの名無しさん (ワッチョイ 7f42-KCZZ)
2020/08/24(月) 20:16:24.02ID:pfMfCN200 1を入力した時点でメッセージボックスが出ると思うんだが10まではセーフで100だと確認のほうが良いのか
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 首相官邸前で「戦争あおるな」 台湾有事巡る答弁に抗議 [蚤の市★]
- 高市首相告白「『なめられない服』を選ぶことに数時間を費やしました」「外交交渉でマウント取れる服、買わなくてはいかんかもなぁ」 [ぐれ★]
- 【赤坂ライブハウス刺傷】逃走していた自衛官の男(43)を殺人未遂の疑いで逮捕 警視庁 被害女性とは知人関係 [Ailuropoda melanoleuca★]
- 『DOWNTOWN+』会員数50万人突破で見えてきた 松本人志の“月収4ケタ万円”驚愕収入 [阿弥陀ヶ峰★]
- 【千葉】コンビニに尿入りペットボトル並べた疑い、26歳男「むしゃくしゃして」…購入した客が飲もうとしたところ臭いに違和感 [ぐれ★]
- トランプ氏、27日までに和平合意要求 ゼレンスキー氏「尊厳か米国か」 [蚤の市★]
- 天ぷら食いたい
- 勇者の母「ん……ふっ、起きなさいっ……私のっ……私のかわいい坊やっ、今日は貴方が……んはっ……勇者として旅立つ日……うふふ」
- 夜勤だけど最近昼間かクソガキが外でうるさい
- 大塚芳忠のASMR
- ペヤング超大盛り完食出来そうもない
- 2018年に手取り14万残業全てサービス残業で働いてた
