!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付けるナリ
ExcelのVBAに関する質問スレナリ
コード書き込みや作成依頼もOKナリ
※前スレ
Excel VBA 質問スレ Part69
https://mevius.5ch.net/test/read.cgi/tech/1607786543/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
Excel VBA 質問スレ Part70
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ b6da-6NWR)
2021/03/18(木) 22:08:43.71ID:jtngtgXU0518デフォルトの名無しさん (ワッチョイ 1e01-bfA/)
2021/04/29(木) 17:08:19.64ID:Z9k/ziJ20 素直にバックアップとるかクラウドで良くないですか
519デフォルトの名無しさん (アウアウウー Sa08-iXMK)
2021/04/29(木) 18:10:50.49ID:MWXZTeF3a >>517
壊れたパソコンには復元できないよ
壊れたパソコンには復元できないよ
520デフォルトの名無しさん (ワッチョイ fe68-uCoU)
2021/04/29(木) 18:18:45.59ID:aGUEXGqc0 再現っていえばいいのかなんといえばいいのか…
とりあえずもしもの時のためにレシピ?を残しておきたい
とりあえずもしもの時のためにレシピ?を残しておきたい
521デフォルトの名無しさん (ワッチョイ 38e6-4uvq)
2021/04/29(木) 18:24:10.96ID:aTZmoNVK0 .slk マルチプラン形式ならテキストとして読めるぞ
522デフォルトの名無しさん (アウアウウー Sab5-4hJQ)
2021/04/29(木) 19:07:29.38ID:k0BuRVHXa523デフォルトの名無しさん (ワッチョイ d98e-iMGS)
2021/04/29(木) 19:41:36.50ID:gMCbhKMx0524デフォルトの名無しさん (ワッチョイ 4e10-mEE2)
2021/04/29(木) 19:42:12.84ID:I+JPieVz0525デフォルトの名無しさん (ワッチョイ fe68-uCoU)
2021/04/29(木) 19:53:50.93ID:aGUEXGqc0 フラッシュメモリーに保存してるけどそれも壊れるかもしれないし
526デフォルトの名無しさん (ワッチョイ 1e01-bfA/)
2021/04/29(木) 20:04:58.52ID:Z9k/ziJ20 だからグーグルのクラウドにでも保存しとけよ
527デフォルトの名無しさん (ワッチョイ d98e-iMGS)
2021/04/29(木) 21:46:03.77ID:gMCbhKMx0 >>525
馬鹿は帰れ
馬鹿は帰れ
528デフォルトの名無しさん (アウアウエー Sa6a-rcSs)
2021/04/29(木) 21:47:52.03ID:qBmeMAVZa >>525
VBAより先に勉強すべきことがある
VBAより先に勉強すべきことがある
529デフォルトの名無しさん (ワッチョイ a868-8KU9)
2021/04/29(木) 21:57:15.15ID:r4t8KOvl0530デフォルトの名無しさん (ワッチョイ c7cc-TNk6)
2021/04/30(金) 00:10:52.82ID:G7lq05sG0 これを短く書きたいのですが、どう書けばいいですか?
Range(Cells(r, 1),Cells(r, 10)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.CurrentRegion.Borders.LineStyle = xlContinuous
Range(Cells(r, 1),Cells(r, 10)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.CurrentRegion.Borders.LineStyle = xlContinuous
531デフォルトの名無しさん (ワッチョイ 7fda-OedE)
2021/04/30(金) 00:13:18.87ID:1H39I5ca0 >>520
カセットテープに保存しとけよ
カセットテープに保存しとけよ
532デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 00:38:44.27ID:XMOC9xEV0 >>530
やりたいことは
Range(Cells(r, 1),Cells(r, 10))
・・・
Range(Cells(r, 11),Cells(r, 20)
みたいなこと?
全容を見せてくれたほうが早いと思う。
やりたいことは
Range(Cells(r, 1),Cells(r, 10))
・・・
Range(Cells(r, 11),Cells(r, 20)
みたいなこと?
全容を見せてくれたほうが早いと思う。
533デフォルトの名無しさん (ワッチョイ 2701-3faj)
2021/04/30(金) 02:19:19.76ID:zq+mlYyf0 >>530
やりたいことを言葉で説明した方が速そう
やりたいことを言葉で説明した方が速そう
534デフォルトの名無しさん (ワッチョイ 2701-3faj)
2021/04/30(金) 02:34:26.19ID:zq+mlYyf0535デフォルトの名無しさん (ワッチョイ bfba-t5YL)
2021/04/30(金) 02:53:52.43ID:sRtBXBMU0 Excelのマクロをエクセル環境なしに実行したいのですが、
vbsをつかえばExcelは不要ですか?
vbsをつかえばExcelは不要ですか?
536デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 03:01:21.54ID:XMOC9xEV0537デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 03:02:27.11ID:XMOC9xEV0538デフォルトの名無しさん (ワッチョイ bfba-t5YL)
2021/04/30(金) 03:04:35.08ID:sRtBXBMU0539デフォルトの名無しさん (ワッチョイ 2701-3faj)
2021/04/30(金) 03:23:39.09ID:zq+mlYyf0 vbsは型宣言が出来ない、
VBAで可能なライブラリ参照が出来ない、
暗黙の参照先等の違いがる
それらを使用していないコードなら実行出来る可能性がある
(要するに簡単にはいかない)
正直「みんな入れてるであろうエクセルで実行できる」っていうただ一つのメリットのみを目的ににして
わざわざ使いにくいVBAを仕方なしに許容してるのであって、
エクセル不要ならPythonなりJSなりC#で書くべき
VBAで可能なライブラリ参照が出来ない、
暗黙の参照先等の違いがる
それらを使用していないコードなら実行出来る可能性がある
(要するに簡単にはいかない)
正直「みんな入れてるであろうエクセルで実行できる」っていうただ一つのメリットのみを目的ににして
わざわざ使いにくいVBAを仕方なしに許容してるのであって、
エクセル不要ならPythonなりJSなりC#で書くべき
540デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 03:29:54.28ID:XMOC9xEV0 >>538
内容による
vbsとvbaは似て非なるもの、だけど互換性はまぁまぁある
vbaをまるっとvbsにコピペして動くものもあれば、手直ししないと動かないもの、絶対に無理なものもある
まぁコピーペーストだけで一発で動くのは稀だとは思う。大体動かないだろう
また、vbsは無料でwindowsに標準でついているので、あーだこーだ言うよりはやったほうが早い
内容による
vbsとvbaは似て非なるもの、だけど互換性はまぁまぁある
vbaをまるっとvbsにコピペして動くものもあれば、手直ししないと動かないもの、絶対に無理なものもある
まぁコピーペーストだけで一発で動くのは稀だとは思う。大体動かないだろう
また、vbsは無料でwindowsに標準でついているので、あーだこーだ言うよりはやったほうが早い
541デフォルトの名無しさん (ワッチョイ 2701-3faj)
2021/04/30(金) 03:37:12.82ID:zq+mlYyf0 >>536
貼ってくれたURLのページにある
>String型変数のメモリアドレス
これ、要するにString型変数の値は参照値って事?
察してはいたけどByval xxx$って嘘じゃん
調べれば調べるほど無茶苦茶な言語だなw
ただ先頭に配列長が入ってるのは嬉しいな
LEN関数が高速だって事だし、実際に検証したらそうだった
これからは文字列の有無はLEN関数を使おう
貼ってくれたURLのページにある
>String型変数のメモリアドレス
これ、要するにString型変数の値は参照値って事?
察してはいたけどByval xxx$って嘘じゃん
調べれば調べるほど無茶苦茶な言語だなw
ただ先頭に配列長が入ってるのは嬉しいな
LEN関数が高速だって事だし、実際に検証したらそうだった
これからは文字列の有無はLEN関数を使おう
542デフォルトの名無しさん (JP 0Hcb-OedE)
2021/04/30(金) 04:58:51.13ID:VHqB9FfdH >>534
MSDNのWin32APIのリファレンス
https://docs.microsoft.com/en-us/windows/win32/api/oaidl/ns-oaidl-variant
これを見れば、Valiant構造体は共用体の入った構造体が共用体になってることが一目瞭然
VBAからは、初期化の手順を省略(自動化)したりして簡単に使えるようにしてある
MSDNのWin32APIのリファレンス
https://docs.microsoft.com/en-us/windows/win32/api/oaidl/ns-oaidl-variant
これを見れば、Valiant構造体は共用体の入った構造体が共用体になってることが一目瞭然
VBAからは、初期化の手順を省略(自動化)したりして簡単に使えるようにしてある
543デフォルトの名無しさん (ワッチョイ df05-uN1F)
2021/04/30(金) 06:01:15.47ID:w8M9C8im0 Dim abc As Variant, maxVal Variant
abc = Range("A1:A100")
・
・
・
maxVal = WorksheetFunction.Max(abc(50 To 80, 1))
これはabc(50 To 80, 1)の部分でコンパイルエラーになりますが、
このように一発で配列内の特定の範囲の値を取得することはできますか?
やはりFor〜Nextで回してやらないと駄目でしょうか?
abc = Range("A1:A100")
・
・
・
maxVal = WorksheetFunction.Max(abc(50 To 80, 1))
これはabc(50 To 80, 1)の部分でコンパイルエラーになりますが、
このように一発で配列内の特定の範囲の値を取得することはできますか?
やはりFor〜Nextで回してやらないと駄目でしょうか?
544デフォルトの名無しさん (JP 0Hcb-OedE)
2021/04/30(金) 06:19:01.47ID:VHqB9FfdH545デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/04/30(金) 07:04:01.89ID:M0On9wgSM >>541
> 察してはいたけどByval xxx$って嘘じゃん
噓じゃねーよ、Byvalならちゃんとコピーされる(内部的には新規領域確保して内容コピー)
> 調べれば調べるほど無茶苦茶な言語だなw
お前さんの理解力が足らんだけ
> 察してはいたけどByval xxx$って嘘じゃん
噓じゃねーよ、Byvalならちゃんとコピーされる(内部的には新規領域確保して内容コピー)
> 調べれば調べるほど無茶苦茶な言語だなw
お前さんの理解力が足らんだけ
546デフォルトの名無しさん (JP 0Hcb-OedE)
2021/04/30(金) 07:57:01.95ID:VHqB9FfdH メモリ上で文字列領域の先頭に長さが入ってるのはMicrosoft BASICの伝統
C言語などで使われる\x00で区切る方式だと文字列の中にChr$(&h00)を入れられなくなるので地味に面倒だった
C言語などで使われる\x00で区切る方式だと文字列の中にChr$(&h00)を入れられなくなるので地味に面倒だった
547デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 09:18:44.82ID:XMOC9xEV0 だから、有限なんですね
548デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/04/30(金) 09:53:25.08ID:JEk9gHJMa 改行しろよ、読みにくいだろ
549デフォルトの名無しさん (ワッチョイ df05-uN1F)
2021/04/30(金) 10:28:11.61ID:8Lrh8uSx0550デフォルトの名無しさん (アウアウウー Saab-qkI6)
2021/04/30(金) 10:56:55.90ID:S41gzW82a WorksheetFunctionってその名の通りワークシート上の計算をするためのものだから仕方ないわな
551デフォルトの名無しさん (ワッチョイ 672f-uN1F)
2021/04/30(金) 13:14:51.01ID:lXELEtlJ0552デフォルトの名無しさん (JP 0Hcb-OedE)
2021/04/30(金) 13:46:28.53ID:VHqB9FfdH553デフォルトの名無しさん (ブーイモ MMcf-solw)
2021/04/30(金) 13:52:18.51ID:4gSq67JmM 質問者を納得させるのではなく
自分の知識をドヤ顔で披露する場がこのスレ
自分の知識をドヤ顔で披露する場がこのスレ
554デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/04/30(金) 13:55:12.85ID:clFaH4DRM 古代BASIC語の使えるやつには想像すらできない構文だな
ナウい言語から入るとこんな発想が出来るのか
Enumeraterとか作ってもコールバック関数書くのが面倒くさいからどうしようもないよね
ナウい言語から入るとこんな発想が出来るのか
Enumeraterとか作ってもコールバック関数書くのが面倒くさいからどうしようもないよね
555デフォルトの名無しさん (ワッチョイ df4f-U2UV)
2021/04/30(金) 14:11:06.28ID:lUzIA11U0 10 CONSOLE 0,25,0,1
20 SCRERN 0,0
20 SCRERN 0,0
556デフォルトの名無しさん (ワッチョイ 7fda-PU2s)
2021/04/30(金) 14:13:33.94ID:1H39I5ca0557デフォルトの名無しさん (スップ Sdff-PTVc)
2021/04/30(金) 16:19:17.86ID:W9vsivKyd sheet1のB1が整数ならSheet2のC1
にSheet1のB1の整数をSheet2のC1に
表示し
Sheet1のB1が整数でない場合は
Sheet2のC1にSheet1のA1の整数を表示
させたいのですが、インデックス範囲エラーになったりして困ってます
Numeric関数なのはわかるんですが
標準モジュールに書くのか
Sheet1に書くのかわかりません
ご教授ください
Private Sub Worksheet_Change(ByVal Taget as Range)
If IsNumeric(Worksheets("1").Range)
にSheet1のB1の整数をSheet2のC1に
表示し
Sheet1のB1が整数でない場合は
Sheet2のC1にSheet1のA1の整数を表示
させたいのですが、インデックス範囲エラーになったりして困ってます
Numeric関数なのはわかるんですが
標準モジュールに書くのか
Sheet1に書くのかわかりません
ご教授ください
Private Sub Worksheet_Change(ByVal Taget as Range)
If IsNumeric(Worksheets("1").Range)
558デフォルトの名無しさん (アウアウウー Saab-qkI6)
2021/04/30(金) 16:51:06.75ID:S41gzW82a559デフォルトの名無しさん (スップ Sdff-PTVc)
2021/04/30(金) 17:19:44.60ID:W9vsivKyd Sheet1にコードを書いてます
560デフォルトの名無しさん (ワッチョイ e701-jEDI)
2021/04/30(金) 19:10:46.17ID:qIU2nW870 そもそもnumericって整数かどうかじゃなくて
数字かどうかの判定じゃなかったか?
数字かどうかの判定じゃなかったか?
561デフォルトの名無しさん (ワッチョイ e701-jEDI)
2021/04/30(金) 19:11:19.57ID:qIU2nW870 あとrangeじゃなくてtargetやろ
562デフォルトの名無しさん (ワッチョイ e701-jEDI)
2021/04/30(金) 19:12:09.12ID:qIU2nW870 あっrangeであってたわ
range(target.address)かな
range(target.address)かな
563デフォルトの名無しさん (ワッチョイ 7fda-OedE)
2021/04/30(金) 19:13:35.28ID:1H39I5ca0564デフォルトの名無しさん (スップ Sdff-PTVc)
2021/04/30(金) 19:48:53.26ID:W9vsivKyd Sheet1のB1の値が変化したらSheet2のC1が変化させたいのでSheet1にコードを書いてチェンジイベントでいいのかな?
むずかしいですね
むずかしいですね
565デフォルトの名無しさん (ワッチョイ 2701-3faj)
2021/04/30(金) 21:15:34.30ID:zq+mlYyf0566デフォルトの名無しさん (ワッチョイ 2701-3faj)
2021/04/30(金) 21:20:31.83ID:zq+mlYyf0567デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/04/30(金) 21:52:12.56ID:BfTXTUZEM >>565
元々文字列は内容変わったら領域確保し直したりするから内部的に参照持つのが普通
ByVal は文字列を複製して渡すしByRefは内部的な参照への参照を渡す
何の矛盾もないよ
中途半端に内部的な参照を気にしてもしょうがないよ
元々文字列は内容変わったら領域確保し直したりするから内部的に参照持つのが普通
ByVal は文字列を複製して渡すしByRefは内部的な参照への参照を渡す
何の矛盾もないよ
中途半端に内部的な参照を気にしてもしょうがないよ
568デフォルトの名無しさん (ワッチョイ df4f-U2UV)
2021/04/30(金) 21:55:44.24ID:lUzIA11U0 >>565
え?そうだっけ?
確か配列は参照渡ししか出来ないから
Variant型に突っ込んで渡して
値型のものを渡すようにするんじゃなかったっけ?
もっともそれでも参照型のものは参照が渡されるけど。
え?そうだっけ?
確か配列は参照渡ししか出来ないから
Variant型に突っ込んで渡して
値型のものを渡すようにするんじゃなかったっけ?
もっともそれでも参照型のものは参照が渡されるけど。
569デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/04/30(金) 22:00:13.74ID:HAcSh5oY0 誰か教えてほしいんですが、
数字を単純に足すんじゃなくて=+100+200というふうに増えた数字を全部数式に残していくように一つのセルに入れていくやり方ってありますか?
例えば別のシートに100 200 350とあったら
記録用のシートのセルに=100+200+350と飛ばしたいです。
セルの中身見た時に650となってるのではなくて=100+200+350と表示されてほしい
数字を単純に足すんじゃなくて=+100+200というふうに増えた数字を全部数式に残していくように一つのセルに入れていくやり方ってありますか?
例えば別のシートに100 200 350とあったら
記録用のシートのセルに=100+200+350と飛ばしたいです。
セルの中身見た時に650となってるのではなくて=100+200+350と表示されてほしい
570デフォルトの名無しさん (ワッチョイ df4f-U2UV)
2021/04/30(金) 22:02:58.83ID:lUzIA11U0 >>569
単純にCStrで数字を文字列に変換して繋げばいいだけと思うけどそういう意味じゃない?
単純にCStrで数字を文字列に変換して繋げばいいだけと思うけどそういう意味じゃない?
571デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/04/30(金) 23:05:04.91ID:ftoQG8Lta572デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/04/30(金) 23:07:22.57ID:ftoQG8Lta >>569
これも式を表示するモードがあったはず
これも式を表示するモードがあったはず
573デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 23:09:00.86ID:XMOC9xEV0 >>557
sheet1モジュールに書く
シート名はs1とs2にしてるのでテキトーに変えて
Private Sub Worksheet_Change(ByVal Target As Range)
If _
Target.Address <> "$B$1" _
Or Not (IsNumeric(Target)) _
Then
Exit Sub
End If
main = Cells(1, 2).Value
main2 = Cells(1, 1).Value
If (Int(main) - (main)) = 0 Then
Sheets("s2").Cells(1, 3) = main
Else
Sheets("s2").Cells(1, 3) = Int(main2)
End If
End Sub
sheet1モジュールに書く
シート名はs1とs2にしてるのでテキトーに変えて
Private Sub Worksheet_Change(ByVal Target As Range)
If _
Target.Address <> "$B$1" _
Or Not (IsNumeric(Target)) _
Then
Exit Sub
End If
main = Cells(1, 2).Value
main2 = Cells(1, 1).Value
If (Int(main) - (main)) = 0 Then
Sheets("s2").Cells(1, 3) = main
Else
Sheets("s2").Cells(1, 3) = Int(main2)
End If
End Sub
574デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 23:13:44.15ID:XMOC9xEV0 >>569
地味にやるしかない
Sub foo()
Cells(3, 1).Formula = "=" & Cells(1, 1).Value & "+" & Cells(2, 1)
End Sub
量が多いならfornextかなんかで処理すると良い
地味にやるしかない
Sub foo()
Cells(3, 1).Formula = "=" & Cells(1, 1).Value & "+" & Cells(2, 1)
End Sub
量が多いならfornextかなんかで処理すると良い
575デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/04/30(金) 23:13:57.10ID:XMOC9xEV0 joinほしい
576デフォルトの名無しさん (スップ Sdff-PTVc)
2021/04/30(金) 23:21:20.34ID:W9vsivKyd577デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/04/30(金) 23:40:08.54ID:HAcSh5oY0578デフォルトの名無しさん (ワッチョイ 7fda-OedE)
2021/05/01(土) 00:46:43.32ID:zFFwGDhV0 CONCATがある
579デフォルトの名無しさん (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 05:48:25.12ID:1uksgnWZM >>575
Joinあるやろ
手元にExcelないから試してないけど
Cells(3, 1).Formula = "=" & Join(Application.Transpose(Range("A1:C1" ).Value), "+")
でいけないかな
Joinあるやろ
手元にExcelないから試してないけど
Cells(3, 1).Formula = "=" & Join(Application.Transpose(Range("A1:C1" ).Value), "+")
でいけないかな
580579 (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 06:04:07.19ID:jbHbRAMYM よく見たら行/列間違えてるわ
Cells(3, 1).Formula = "=" & Join(Application.Transpose(Range("A1:A3" ).Value), "+")
だな
Excel 2019ならVBA使わずに
C1: =TEXTJOIN("+", TRUE, "=", A1:A3)
でいけるかも
Cells(3, 1).Formula = "=" & Join(Application.Transpose(Range("A1:A3" ).Value), "+")
だな
Excel 2019ならVBA使わずに
C1: =TEXTJOIN("+", TRUE, "=", A1:A3)
でいけるかも
581デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 10:06:17.84ID:v351dbwI0 >>580
例えば元表
コード 200 金額 200 5月
コード 150 金額 300 4月
コード 200 金額 500 5月
コード 150 金額 400 6月
コード 200 金額 50 5月
と並んでたとして、飛ばしたい表に
コード200に一致した場合は=200+500+50
コード150 の4月は=300
みたいな感じで月が同じでコードが一致してる場合だけ積み立てていくことってできますか?
うまくいかなくて、、
例えば元表
コード 200 金額 200 5月
コード 150 金額 300 4月
コード 200 金額 500 5月
コード 150 金額 400 6月
コード 200 金額 50 5月
と並んでたとして、飛ばしたい表に
コード200に一致した場合は=200+500+50
コード150 の4月は=300
みたいな感じで月が同じでコードが一致してる場合だけ積み立てていくことってできますか?
うまくいかなくて、、
582デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/05/01(土) 10:22:39.67ID:orU8r25h0 >>580
別の質問だけど、
Application.Transpose
って
WorksheetFunction.Transpose
の事?
ApplicationってついてたらWorksheetFunctionは省略できるの?
別の質問だけど、
Application.Transpose
って
WorksheetFunction.Transpose
の事?
ApplicationってついてたらWorksheetFunctionは省略できるの?
583デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/05/01(土) 13:16:18.88ID:eT9ez6fta こういう処理はピボットの得意分野だとおもう
ピボットスレにも聞いてみたらとうかな
ピボットスレにも聞いてみたらとうかな
584デフォルトの名無しさん (ワッチョイ 7fda-x7Q7)
2021/05/01(土) 13:18:22.06ID:+awRLs9V0 ピボットスレってあったっけ?
585デフォルトの名無しさん (ラクッペペ MM8f-HlUj)
2021/05/01(土) 13:20:57.76ID:GvoaCTGBM >>582
互換、環境の違い……
互換、環境の違い……
586デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/05/01(土) 13:30:58.50ID:eT9ez6fta ピボットを設定して
たて列を月
よこ列を単価
合計は "値で合計"にする <はじめは個数で合計>になってる
いちばん間違えやすいところ
たて列を月
よこ列を単価
合計は "値で合計"にする <はじめは個数で合計>になってる
いちばん間違えやすいところ
587デフォルトの名無しさん (ワッチョイ dff0-Ew5U)
2021/05/01(土) 14:28:03.48ID:FxNutXRP0 >>573
> >>557
> sheet1モジュールに書く
> シート名はs1とs2にしてるのでテキトーに変えて
>
>
> Private Sub Worksheet_Change(ByVal Target As Range)
>
> If _
> Target.Address <> "$B$1" _
> Or Not (IsNumeric(Target)) _
> Then
> Exit Sub
> End If
>
> main = Cells(1, 2).Value
> main2 = Cells(1, 1).Value
>
> If (Int(main) - (main)) = 0 Then
> Sheets("s2").Cells(1, 3) = main
> Else
> Sheets("s2").Cells(1, 3) = Int(main2)
> End If
>
> End Sub
あらためて
ありがとうございます。
整数なら無視できるようになりました!
あとは Sheets("s2").Cells(1, 3) にSheets("s1").Cells(1, 2).Valueが整数じゃなければSheets("s1").Cells(1, 1).Valueが入れば完璧です
ちょっと自分でググってみます!もしできないようならまた質問させてください
> >>557
> sheet1モジュールに書く
> シート名はs1とs2にしてるのでテキトーに変えて
>
>
> Private Sub Worksheet_Change(ByVal Target As Range)
>
> If _
> Target.Address <> "$B$1" _
> Or Not (IsNumeric(Target)) _
> Then
> Exit Sub
> End If
>
> main = Cells(1, 2).Value
> main2 = Cells(1, 1).Value
>
> If (Int(main) - (main)) = 0 Then
> Sheets("s2").Cells(1, 3) = main
> Else
> Sheets("s2").Cells(1, 3) = Int(main2)
> End If
>
> End Sub
あらためて
ありがとうございます。
整数なら無視できるようになりました!
あとは Sheets("s2").Cells(1, 3) にSheets("s1").Cells(1, 2).Valueが整数じゃなければSheets("s1").Cells(1, 1).Valueが入れば完璧です
ちょっと自分でググってみます!もしできないようならまた質問させてください
588デフォルトの名無しさん (ワッチョイ dfda-PU2s)
2021/05/01(土) 15:00:22.43ID:FcpS+0KE0 >>584
誰か建ててくれると期待してはや数年。。。
誰か建ててくれると期待してはや数年。。。
589デフォルトの名無しさん (ワッチョイ 7fda-x7Q7)
2021/05/01(土) 15:05:23.71ID:+awRLs9V0 PowerQueryスレは建ったんだけど、
https://mevius.5ch.net/test/read.cgi/bsoft/1571540368/
ピボットスレ、建ててみる?
先日、総合相談スレでPowerPivot絡みの質問はあったが。
https://mevius.5ch.net/test/read.cgi/bsoft/1571540368/
ピボットスレ、建ててみる?
先日、総合相談スレでPowerPivot絡みの質問はあったが。
590デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 15:15:39.62ID:v351dbwI0591デフォルトの名無しさん (アウアウウー Saab-5hFs)
2021/05/01(土) 16:16:38.30ID:eT9ez6fta あーそうかも
やはりピボットスレが立つまで待ちますか
やはりピボットスレが立つまで待ちますか
592デフォルトの名無しさん (ワッチョイ dfb3-3tTE)
2021/05/01(土) 16:42:05.48ID:AMC1YaHy0 >>581
それは、たとえば、元表にB1&countif(B$1:B1,B1)みたいな作業列を作って
飛ばしたい表に、iferror(index(D:D,match(作業列,コード&column()+1,0)),"")
みたいな数式を貼り付けるのではだめですか?
1つのセルに、数式として入っている必要性が、あるのですか?
それは、たとえば、元表にB1&countif(B$1:B1,B1)みたいな作業列を作って
飛ばしたい表に、iferror(index(D:D,match(作業列,コード&column()+1,0)),"")
みたいな数式を貼り付けるのではだめですか?
1つのセルに、数式として入っている必要性が、あるのですか?
593デフォルトの名無しさん (ワッチョイ dfb3-3tTE)
2021/05/01(土) 17:05:58.85ID:AMC1YaHy0 >>592修正、matchの書式も違うし
月も必要なので、B1&E1 を作業列Fに、count(F$1:F1,F1)を作業列Gに入れて
飛ばしたい表のA列はコード、B列は月、C列以降にiferror(index(元表!$D:$D,match($A1&$B1&column()-2,元表!$F:$F,0)),"")
こんな感じではだめですか?
月も必要なので、B1&E1 を作業列Fに、count(F$1:F1,F1)を作業列Gに入れて
飛ばしたい表のA列はコード、B列は月、C列以降にiferror(index(元表!$D:$D,match($A1&$B1&column()-2,元表!$F:$F,0)),"")
こんな感じではだめですか?
594デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 17:25:51.43ID:v351dbwI0 >>592
合計なら楽なんですが、どうしても=+で数字を積み立てないとダメなんですよね、、
だから数式では解決できない気がします
vbaでやるなら配列に詰め込んで最後に結合させるのかなあとか思ってるんですがなかなかいいコードが思い浮かばない、、
合計なら楽なんですが、どうしても=+で数字を積み立てないとダメなんですよね、、
だから数式では解決できない気がします
vbaでやるなら配列に詰め込んで最後に結合させるのかなあとか思ってるんですがなかなかいいコードが思い浮かばない、、
595デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 17:29:33.26ID:v351dbwI0 >>593
ちなみに飛ばしたい表のB列は月というか
月
コード 〜
みたいな形になってて、月は横軸の大項目としてしか存在してないんですよね
色々厄介な作りになってまして、、
ちなみに飛ばしたい表のB列は月というか
月
コード 〜
みたいな形になってて、月は横軸の大項目としてしか存在してないんですよね
色々厄介な作りになってまして、、
596デフォルトの名無しさん (ワッチョイ a78e-MiMN)
2021/05/01(土) 17:33:09.92ID:d9MtRRCh0 知能に障害がある人ばかり質問するようになった感じ
597デフォルトの名無しさん (ワッチョイ df79-2I0v)
2021/05/01(土) 17:49:10.58ID:MA8kI4AW0 コロナ自粛でGW中だから暇なんだよ
暇な人に相手して欲しいんだよ
暇な人に相手して欲しいんだよ
598デフォルトの名無しさん (ワッチョイ dfda-PU2s)
2021/05/01(土) 18:04:53.11ID:QtACG4Vk0 知恵袋でやれば良いと思う
599579 (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 18:07:44.96ID:4GddeLjJM >>581
> みたいな感じで月が同じでコードが一致してる場合だけ積み立てていくことってできますか?
月が同じってどこと同じなの?
コードのようにどこかで指定するってこと?
とりあえずコードがA列、金額がB列、月がC列に入っているとして
Dim 元表 As Sheet: Set 元表 = Range("A1:C10")
Dim 金額() As String: ReDim 金額(元表.Row To 元表.Row + 元表.Rows.Count - 1)
Dim 書込行 As Long: 書込行 = LBound(金額)
Dim 行 As Long
For 行 = LBound(金額) To UBound(金額)
If Cells(行, "A").Value = コード And Cells(行, "C").Value = 月 Then
金額(書込行) = Cells(行, "B").Value
書込行 = 書込行 + 1
End If
Next
ReDim Preserve 金額(LBound(金額) To 書込行 - 1)
Range("D1").Formula = "=" & Join("+",
金額)
みたいな感じでいけると思う
>582
ごめん、テキトーにググって書いてるから間違えてるみたいやな
Application.WorksheetFunction.Transpose
にしといて
> みたいな感じで月が同じでコードが一致してる場合だけ積み立てていくことってできますか?
月が同じってどこと同じなの?
コードのようにどこかで指定するってこと?
とりあえずコードがA列、金額がB列、月がC列に入っているとして
Dim 元表 As Sheet: Set 元表 = Range("A1:C10")
Dim 金額() As String: ReDim 金額(元表.Row To 元表.Row + 元表.Rows.Count - 1)
Dim 書込行 As Long: 書込行 = LBound(金額)
Dim 行 As Long
For 行 = LBound(金額) To UBound(金額)
If Cells(行, "A").Value = コード And Cells(行, "C").Value = 月 Then
金額(書込行) = Cells(行, "B").Value
書込行 = 書込行 + 1
End If
Next
ReDim Preserve 金額(LBound(金額) To 書込行 - 1)
Range("D1").Formula = "=" & Join("+",
金額)
みたいな感じでいけると思う
>582
ごめん、テキトーにググって書いてるから間違えてるみたいやな
Application.WorksheetFunction.Transpose
にしといて
600デフォルトの名無しさん (ワッチョイ 075f-2Bcu)
2021/05/01(土) 18:46:01.00ID:z941MlAe0 >>599
最初の型はSheetじゃなくてRangeじゃね
あとこの人の言ってるのは普通に文字列としてValueプロパティに式を書き込めばいいような気がするけど
上で語ってる人ってあんま教えに来ないよな
最初の型はSheetじゃなくてRangeじゃね
あとこの人の言ってるのは普通に文字列としてValueプロパティに式を書き込めばいいような気がするけど
上で語ってる人ってあんま教えに来ないよな
601デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 18:57:24.37ID:v351dbwI0 >>599
試しにやろうとしたら最終行が型不一致でエラーになりました・・
試しにやろうとしたら最終行が型不一致でエラーになりました・・
602579 (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 19:57:34.66ID:jFabojDWM603デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 20:06:26.75ID:v351dbwI0604デフォルトの名無しさん (ワントンキン MMbf-Pk3V)
2021/05/01(土) 22:02:09.39ID:ueS9oUA3M >>603
自分で考えることくらいしろや、ゆとり
自分で考えることくらいしろや、ゆとり
605デフォルトの名無しさん (ワッチョイ 8701-I0Kk)
2021/05/01(土) 22:18:52.25ID:T1b9C9NF0 dim hako() as variant
redim hako(ここはデータ数を格納)
for i = 0 to 回数
hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
next
こんな感じで配列の中にセルの文字入れて行こうとするとエラーになるんですが原因分かる人居たら教えてください
便宜上cellの位置は1,1にしてますけど実際は縦が動いていきます
redim hako(ここはデータ数を格納)
for i = 0 to 回数
hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
next
こんな感じで配列の中にセルの文字入れて行こうとするとエラーになるんですが原因分かる人居たら教えてください
便宜上cellの位置は1,1にしてますけど実際は縦が動いていきます
606デフォルトの名無しさん (ワッチョイ df8f-OedE)
2021/05/01(土) 22:41:00.37ID:/V6pM9G50 >>541
> これ、要するにString型変数の値は参照値って事?
> 察してはいたけどByval xxx$って嘘じゃん
逆にC知ってると、文字列がプリミティブってのにものすごい
違和感があるよ。「ああ、内部で変換してんだな。そういうものだと
思っておこう」と、自分を納得させる。
> これ、要するにString型変数の値は参照値って事?
> 察してはいたけどByval xxx$って嘘じゃん
逆にC知ってると、文字列がプリミティブってのにものすごい
違和感があるよ。「ああ、内部で変換してんだな。そういうものだと
思っておこう」と、自分を納得させる。
607579 (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 22:45:28.00ID:4GddeLjJM >>603
条件に合うものがないと ReDim 金額(1 To 0) の様になってエラーになる
VBAではReDimで空の配列は作れないので条件に合うものがない場合を場合分けして処理するしかない
例えば条件に合うものがない場合はD1を空にするなら最後の2行を
Dim 式 As String
If LBound(金額) < 書込行 <= Then
ReDim Preserve 金額(LBound(金額) To 書込行 - 1)
式 = Join("+", 金額)
Else
式 = """"""
End If
Range("D1").Formula = "=" & 式
とかにすればいい
条件に合うものがないと ReDim 金額(1 To 0) の様になってエラーになる
VBAではReDimで空の配列は作れないので条件に合うものがない場合を場合分けして処理するしかない
例えば条件に合うものがない場合はD1を空にするなら最後の2行を
Dim 式 As String
If LBound(金額) < 書込行 <= Then
ReDim Preserve 金額(LBound(金額) To 書込行 - 1)
式 = Join("+", 金額)
Else
式 = """"""
End If
Range("D1").Formula = "=" & 式
とかにすればいい
608デフォルトの名無しさん (ワッチョイ df4f-U2UV)
2021/05/01(土) 22:53:14.11ID:1m8BqwmN0 >>605
>hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
の、
Worksheets("Sheet1").Cells(1,1)が指してる先が数字でないなんてオチはないよね?
>hako(i) = Worksheets("Sheet1").Range(Worksheets("Sheet1").Cells(1,1), Worksheets("Sheet1").Cells(1,1)).Value
の、
Worksheets("Sheet1").Cells(1,1)が指してる先が数字でないなんてオチはないよね?
609デフォルトの名無しさん (ワッチョイ 8701-I0Kk)
2021/05/01(土) 23:00:47.42ID:T1b9C9NF0610デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 23:06:25.35ID:v351dbwI0 >>607
すごい!
ちょっと動くようになりました。
二行目のif文の<=って消していいですかね?
消さないとエラーになってしまったので
ただ、式=join("+",金額)のところで型が一致しないエラーになりました
すごい!
ちょっと動くようになりました。
二行目のif文の<=って消していいですかね?
消さないとエラーになってしまったので
ただ、式=join("+",金額)のところで型が一致しないエラーになりました
611デフォルトの名無しさん (ワッチョイ a78e-MiMN)
2021/05/01(土) 23:16:54.43ID:d9MtRRCh0 いつものあいつ確定
612579 (テテンテンテン MM8f-m/Zw)
2021/05/01(土) 23:44:05.17ID:ll+wAnFJM613デフォルトの名無しさん (ワッチョイ 0702-h3Dk)
2021/05/01(土) 23:54:50.36ID:v351dbwI0614デフォルトの名無しさん (ワッチョイ 7fda-x7Q7)
2021/05/02(日) 09:42:00.36ID:1V5M4ibt0 >>590
PowerPivotでDAX関数使えば出来るかも。
PowerPivotでDAX関数使えば出来るかも。
615デフォルトの名無しさん (ワッチョイ 7fda-x7Q7)
2021/05/02(日) 09:58:00.77ID:1V5M4ibt0616デフォルトの名無しさん (ワッチョイ 8768-YF1U)
2021/05/02(日) 10:03:52.79ID:uM4tl5TR0 いきなり宣伝てアンタ
617579 (テテンテンテン MM8f-m/Zw)
2021/05/02(日) 10:19:11.69ID:72ULtZJbM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】中国外務省報道官 高市首相発言撤回なければ「断固たる対抗措置」 ★2 [蚤の市★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★4 [ぐれ★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★3 [BFU★]
- 中国、日本行き“50万人”キャンセル 渡航自粛でコロナ禍以来最大 [お断り★]
- 【速報】日本産牛肉の対中国輸出再開協議が中止 ★2 [おっさん友の会★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 [ぐれ★]
- 中国「私達が怒ってるのは日本の政治家に対してで、日本の観光客や日本企業はこれまで通り歓迎する。これこそが大国としての余裕」 [377482965]
- 【速報】中国政府、ゲームを禁輸。原神やブルアカ、荒野行動が日本で影響 [347751896]
- 【悲報】日本人の半数以上が、事ここに至っても日本が中国に喧嘩売ったって理解していない件について [616817505]
- 中国政府、日本人のビザ免除停止、鬼滅の刃公開停止を検討へ [271912485]
- 高市コイン、ガチで156円突入へwwwwwwwwww [246620176]
- Bloomberg「やり過ぎた中国、高市首相の政策遂行手助け」 [481941988]
