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
792 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 06:16:19.93 ID:S2WAje4f0.net] >>788 800kの画像でやってみたけど15Mぐらいまで巨大化してしまう やはりAddPictureで代用してみる
793 名前:デフォルトの名無しさん mailto:sage [2022/10/03(月) 07:27:24.16 ID:4wRZXMmm0.net] VBEに書いたコードの整列っていうかコードを整えるっていうか自動インデントっていうかそんなショートカットキーがあったと思うけどなんだっけ?
794 名前:デフォルトの名無しさん (ワッチョイ 53ce-OAEy) mailto:sage [[ここ壊れてます] .net] タブ
795 名前:デフォルトの名無しさん [2022/10/03(月) 20:58:11.99 ID:FDmFS1zQ0.net] >>791 変な枷付けること考えんと 好きに作っていいんやで
796 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 15:00:55.06 ID:pLalriKq0.net] イベントで質問 余所で作ったエクセルにVBAで改造加えてるんだけど 1マス入力だけするSheetにActiveXのコマンドボタン付けたら Worksheet_SelectionChange が発生しなくなった コマンドボタン押したイベントは拾ってるので EnableEventsがFalseってわけじゃない(イミディエイトで確認済み) デザインモードを解除してもWorksheet_SelectionChangeイベントが起きないので しょうが無いからまた一から作り直したんだが この現象って頻発するもの? ググってもOfficeの修復かEnableEventsしか解決策が出てこない
797 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 15:54:59.32 ID:TDYI1fTGd.net] >>792 Sub Macro1() ActiveSheet.Pictures.Insert "C:\Work\Sample1.jpg" End Sub これで400KBのpngで試してみたけど なぜかxlsmファイルのサイズは15KB 何か別の要因とか
798 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 19:28:07.31 ID:uOFwOuxi0.net] >>796 そりゃエクセルを改造したら駄目だろ
799 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 19:47:41.77 ID:o+JurUyd0.net] >>792 オプションの詳細設定-イメージのサイズと画質 ってどうなってる?
800 名前:デフォルトの名無しさん [2022/10/04(火) 21:08:36.46 ID:vyetwO+c0.net] Dim ar(2) As Variant ar(0) = 1 ar(1) = 2 ar(2) = Split("1,2,3,4,5", ",") Dim i For i = 0 To UBound(ar(2)) ar(2)(i) = CLng(ar(2)(i)) Next i splitで作ったジャグ配列の中身をlong型に変換したいです。 variant変数に一度入ったらもう無理ですか? 一応他の変数に入れる事で型変換には成功するのですが。 余計な変数を二つも用意してstringで作成されたのを一時的なvariant型ノーマル配列に おさめてmそのあとで本当に使いたい配列のジャグ配列に入れていくというのが どうも汚い感じで腑におちません。 アドバイスもらえると助かります。
801 名前:デフォルトの名無しさん [2022/10/04(火) 22:26:54.77 ID:cce3s7590.net] >>800 出来ません 諦めてください
802 名前:800 [2022/10/04(火) 22:43:48.69 ID:vyetwO+c0.net] >>801 ありがとうございます。 ジャグ配列はRedim出来ないのがデメリットですね。 動的な配列の中にジャグ配列なのですが、なんとか先に不確定な親配列の中にある 不確定な数のジャグ配列を一時的なLong型配列に作って そこからさらにsplitなしでなんとか作ろうとあれこれしてたら よっぽど>>800 の方法の方が処理がわかりやすくなってしまい徒労に終わりました。 諦めます。踏ん切りつきました。
803 名前:デフォルトの名無しさん mailto:sage [2022/10/04(火) 23:35:06.72 ID:o+JurUyd0.net] >splitで作ったジャグ配列 >動的な配列の中にジャグ配列 ジャグ配列って用語の使い方が微妙に間違ってる気がするが... そもそも文字列を分割して配列作ってるんだから文字列の配列になるのが当然で Variant上等でやるなら、それを使う側がVariantで受ければいいだけでは? まあ俺ならどうしても文字列をSplitしてLongにしたいなら Longの配列返すSplitのラップ関数作るけど
804 名前:デフォルトの名無しさん [2022/10/05(水) 04:48:52.00 ID:b9GTOuH90.net] sqliteで作ったジャグ配列。
805 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 07:10:06.74 ID:8YZU4Hq7a.net] >>797 それでいくとうまくいくんだけどね、 通常のPictures.Insertだとリンク貼付けなのよ。他人に送付したら見れない。 だから一旦クリップボード経由でPaste使ってやってるんだがそれだと容量がヤバくなる。
806 名前:デフォルトの名無しさん [2022/10/05(水) 08:07:32.65 ID:hw4y4dFR0.net] そもそも何でもかんでも配列で処理しようとするのがちょっとねぇ。 例えば列に当たる要素毎に違う型を使いたいなら ちょっと仕組みは大きくなるけどADODBのRecordsetを使うことや 1行の列データ単位の値を格納するクラスを作ってそれを行単位としてディクショナリやコレクションに追加して行くことも検討することを視野に入れると 結局後で読みやすく汎用性の高いロジックが組めたりする。 処理速度優先なら配列一択だからそのときのシュチュエーションに合わせて使い分けだね。
807 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 08:19:21.40 ID:SsR8S72r0.net] 構造体ではできんの? ジャグ使う機会無いからなんとも言えんが
808 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 10:50:57.71 ID:HrKgxVhUd.net] すぐDBとか持ち出す奴いるけどコスト考えたらそう簡単にDBなんか使わんと思うけどね 普通に配列処理用の関数のみのモジュールでコード管理すればいいだけと思うわ
809 名前:デフォルトの名無しさん [2022/10/05(水) 13:20:52.03 ID:7KiNZ4t1d.net] >>808 何のコスト?
810 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 14:41:00.50 ID:bxBPBLxH0.net] やっぱ好きなように作るのが1番ね
811 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 15:47:13.70 ID:DsSYxIFi0.net] ワークシートがDBみたいなもんだしね
812 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 15:53:15.41 ID:tZ9pwx2fM.net] 学習コスト
813 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 21:19:11.66 ID:/BrWnOTx0.net] コストコ
814 名前:デフォルトの名無しさん mailto:sage [2022/10/05(水) 23:35:05.88 ID:bxBPBLxH0.net] コスパ良い
815 名前:デフォルトの名無しさん [2022/10/06(木) 16:49:22.22 ID:wENRazb+d.net] 例えば、誕生石を取得するGetBirthStone関数を作ろうとすれば引数は「日付 as Variant」と「月 as Integer(Long)」のどちらがいいでしょうか?
816 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:54:16.04 ID:lmEPcDvIM.net] Dateではあかんのか?
817 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:55:37.45 ID:1FPDwTBGM.net] そんなもんVLOOKUPで誕生石シートを検索すれば十分 VBAを正しく使うコツはVBAを可能な限り書かないことだよ
818 名前:デフォルトの名無しさん [2022/10/06(木) 17:19:15.50 ID:wENRazb+d.net] >>816 Date型でも大丈夫ですか? 一応、最初の部分はこう書いてみました If Not IsDate(日付) then GetBirthStone = CVErr(xlErrValue) Exit Function
819 名前:デフォルトの名無しさん [2022/10/06(木) 17:48:34.71 ID:KR9VbeXw0.net] >>817 いや、むしろVBAだけの方がメンテしやすい データとロジックは分ける方がいい
820 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 19:10:02.45 ID:YSVEcn1gd.net] >>815 元のデータが何によるかで違うけど「月 as Integer(Long)」でいいのではと思う 仮に元のデータが日付でもGetBirthStone(Month(日付))で済む 月を渡すようなケースがありえないなら日付を渡して関数内でMonthを使うでもいい
821 名前:デフォルトの名無しさん (ワッチョイ 435f-pIDl) [[ここ壊れてます] .net] 月だけでいい 特定の日付に依らずある月の誕生石を知りたい場合に 意味のないDate値用意しなきゃいけなくなるから可読性が落ちる >>817 誕生石みたいに改訂されたことがニュースになるくらい固定されてる内容ならコードにベタ打ちでいいと思う 祝日みたいに毎年変動するものとか、組合せの数が多すぎる要素ならシート管理の方が扱いやすいと思うけど
822 名前:デフォルトの名無しさん (ワッチョイ d3da-pIDl) mailto:sage [[ここ壊れてます] .net] >>815 その程度のこと自分で決められんようでは時間かかってしょうがないだろ
823 名前:デフォルトの名無しさん (ワッチョイ 6f8c-SQdC) mailto:sage [[ここ壊れてます] .net] >>815 Function getBirthStone(日付 As Date) Application.Volatile True getBirthStone = WorksheetFunction.Choose(Month(日付), "ガーネット", "アメシスト", "アクアマリン", "ダイヤモンド", "エメラルド", "ムーンストーン、真珠", "ルビー", "ペリドット", "サファイア", "オパール、トルマリン", "トパーズ", "トルコ石、タンザナイト") End Function こんなかんじ?
824 名前:デフォルトの名無しさん [2022/10/06(木) 22:32:10.00 ID:wENRazb+d.net] >>823 ありがとうございます。
825 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 22:47:25.99 ID:HCQdlFdq0.net] >>823 わざわざワークシート関数を呼ばなくてもVBAにもChoose関数あるよ https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/choose-function
826 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 23:06:53.10 ID:gOgPUvPm0.net] ほんとだw てへ
827 名前:800 mailto:sage [2022/10/09(日) 17:09:18.30 ID:Kilq6kjS0.net] >>803 ラップ関数作る解決方法最高です。 頭固かったです。 他にも導入できそうなところが見つかり助かりました。 感謝です。
828 名前:デフォルトの名無しさん mailto:sage [2022/10/10(月) 21:48:05.32 ID:P58+Ol8v0.net] >誕生石みたいに改訂されたことがニュースになるくらい固定されてる内容ならコードにベタ打ちでいいと思う >>823 を見ての通りこの手は表記ゆれが問題になる事が多いから 可能な限り外部データにした方がいい
829 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 13:53:54.44 ID:uAPvvwer0.net] インプットボックスで入力される値が数字かどうか判断するコードってどう書けばいい?
830 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:15:03.61 ID:fEDU7G4fd.net] ・符号(+-)を許すか ・ドット(小数点)を許すか ・カンマ(桁区切り) を踏まえて文字の妥当性チェックすればいいんじゃないの
831 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:17:40.55 ID:fEDU7G4fd.net] あと自分はWorksheetFunction使うの好きじゃないけど WorksheetFunction.IsNumber でもいいかもね
832 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 14:26:37.29 ID:H84z/pNR0.net] 全角は?漢数字は?ローマ数字は?欧米式の桁区切りは? 入力検査は考え始めるとキリがない分野の一つだぜ
833 名前:デフォルトの名無しさん [2022/10/11(火) 15:13:10.17 ID:DoWcBI1l0.net] >>829 IsNumericじゃダメなの?
834 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 17:02:04.45 ID:uAPvvwer0.net] >>833 さんきゅーそれだ てかVariant型が数値かどうか調べられるんだな~ 書き方解ったらvartypeとかtypenameでも行けそうな気がする ちょい試してみよ
835 名前:デフォルトの名無しさん [2022/10/11(火) 18:13:13.59 ID:DoWcBI1l0.net] >>834 語弊があるといけないから言っておくと、 IsNumericはあくまで数値として扱える値(数値に変換出来る値)かどうかを判定するよ。 だからString型でも”123”みたいのはTrueを返すからそこは注意してね。
836 名前:デフォルトの名無しさん mailto:sage [2022/10/11(火) 20:16:52.08 ID:hb9m45MO0.net] 考慮点はまだあるぞ IsNumericって "\3"とか"3e3"とか"&habc"とかもTrueだぜ
837 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:33:18.55 ID:FAaW2+wFd.net] じゃ足し算する関数を別に作ってノーエラーで戻ってきたら数値 Sub Main() '全角数字も数字と見なす If Suujikana(StrConv(InputBox("入力せぇ"), vbNarrow)) Then MsgBox "数字だよ" Else MsgBox "数字じゃないよ" End If End Sub Function Suujikana(moji As Long) As Boolean On Error GoTo er moji = moji + moji Suujikana = True Exit Function er: Suujikana = False End Function
838 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:35:48.26 ID:FAaW2+wFd.net] あ、これじゃだめかえらーでるあ
839 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:38:00.09 ID:FAaW2+wFd.net] このやろ、variantにしたら+で文字列つくりやがって こんのやろぉ
840 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 08:39:59.19 ID:FAaW2+wFd.net] これでいい?らめ? Sub Main() '全角数字も数字と見なす If Suujikana(StrConv(InputBox("入力せぇ"), vbNarrow)) Then MsgBox "数字だよ" Else MsgBox "数字じゃないよ" End If End Sub Function Suujikana(moji As Variant) As Boolean On Error GoTo er moji = moji * moji Suujikana = True Exit Function er: Suujikana = False End Function
841 名前:デフォルトの名無しさん [2022/10/12(水) 09:33:08.65 ID:JFXNmWRt0.net] >>836 まぁその辺は数値として受け取れるとも言えるからね。 その辺除外したいなら最初に“¥”や“e”や“&h”が含まれていたら数値ではないって分岐入れとけばいいだけじゃないの?
842 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 09:45:17.75 ID:05zETGAlM.net] >>840 自分も同じこと考えたけど型の制約が緩いと面倒くさそうなので思考を放棄した、よく頑張ったな
843 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 10:05:45.44 ID:05zETGAlM.net] そういえば昔型はあるのとないのではどっちが良いのかって記事を見たことあるな 結局型がないと論理エラーが出ないように型をちゃんと理解する必要があるって書いてた
844 名前:デフォルトの名無しさん mailto:sage [2022/10/12(水) 10:15:23.77 ID:FnwlmZOz0.net] kgとkmは単純に足し算しても意味ないからな
845 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 04:03:11.23 ID:j3UF+2500.net] 別にVBA使わなくてもワークシート関数でできるじゃんって意見どう思う?
846 名前:デフォルトの名無しさん [2022/10/13(木) 04:08:37.62 ID:QthptHxba.net] やりたいようにやれ
847 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 05:43:31.20 ID:l6HSpiwg0.net] >>845 内容によるけどまあワークシート関数でできるならその方がいいだろうな
848 名前:デフォルトの名無しさん [2022/10/13(木) 06:51:28.60 ID:R3JkkIAh0.net] A1に入力されているものが消えたらB1以降の入力セルデータが右から左に自動で繰り上がってくるようにしたいのですがこれで大丈夫ですか? これをA20くらいまで適用したいんですけど教えて貰えませんか...? Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Range("A1").Address And IsEmpty(Target) Then Application.EnableEvents = False lastrow = Cells (Rows.Count, "A").End(xIUp).Row Range("B1:F1"&lastrow).Copy Range("A1").PasteSpecial xIPasteValues Range ("A"&lastrow).ClearContents Application.EnableEvents = True End If End Sub
849 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 11:53:03.67 ID:Ue05WQwm0.net] キーボード操作でマクロ作って呼べばいいんじゃね
850 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 13:03:11.83 ID:8suwpN2kr.net] "B1:F"&lastrow 下から4行目は何の処理かな g列以降にデータがないなら、a列削除でもいけそう
851 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 13:57:54.49 ID:UFLyO0SD0.net] xIUp >> xlUp >> xlLeft xIPaste >> xlPaste excel だから xl だよ 本から手入力したのかな
852 名前:デフォルトの名無しさん mailto:sage [2022/10/13(木) 15:04:44.40 ID:xeSsgHCJ0.net] 文字列にしてTrimして 右から一文字づつAscでコード調べて数字判別してる
853 名前:デフォルトの名無しさん [2022/10/15(土) 01:10:39.87 ID:zmWNo0nm0.net] そういや何気にVBAの中でCallByName使うとJavaScript 使えるらしいね。 使ったことないけど。
854 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 01:25:23.69 ID:eU4yePu40.net] >>853 どういうこと? どうやるの?
855 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 07:21:27.16 ID:tw/asOzR0.net] >>853 文字列で言語書いて実行するのってどうも好きじゃないな そもそも有効な場面ってあるんだろうか bougyuusonnin.seesaa.net/article/191171013.html >>854 調べなよ・・・
856 名前:デフォルトの名無しさん [2022/10/15(土) 09:05:24.46 ID:zmWNo0nm0.net] >>855 さあ? メソッドチェーンが使えるくらい? まぁ無理して使うもんでもないような。 現にJavascript知っててもVBAに混ぜて 使うような状況なんてなったことないし、 大体記述がめんどいし。
857 名前:デフォルトの名無しさん mailto:sage [2022/10/15(土) 09:07:30.39 ID:tw/asOzR0.net] >>856 ありがとう やっぱりほとんど無いよね。
858 名前:デフォルトの名無しさん mailto:sage [2022/10/16(日) 03:31:09.39 ID:IoSf1xr/0.net] メリットはネイティブの手段でJSONがパースできるようになる事なんだけどVBAで必要になることはほとんどないか ちなみに似たような方法でHtmlFileからIEのjavascriptを呼ぶ方法もある
859 名前:デフォルトの名無しさん mailto:sage [2022/10/16(日) 05:54:19.77 ID:zEVEZIxw0.net] ネイティブ?
860 名前:デフォルトの名無しさん mailto:sage [2022/10/16(日) 06:00:43.85 ID:q8mBJvHk0.net] 予め言語側で用意されてるってことじゃない
861 名前:デフォルトの名無しさん [2022/10/16(日) 06:58:42.73 ID:4eBUdjNxM.net] 正規表現をRegExpオブジェクトで利用することはネイティブですか?
862 名前:デフォルトの名無しさん [2022/10/16(日) 08:27:49.05 ID:6FfxZTeW0.net] 正規表現をRegExpオブジェクトで利用したらハゲますよ
863 名前:デフォルトの名無しさん mailto:sage [2022/10/16(日) 23:46:46.75 ID:n3hO69PQ0.net] 性器のことしか考えてないから禿げるんじゃね
864 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 02:28:59.55 ID:Foj5GBltM.net] 正規表現はexcelapiを使うのが楽
865 名前:デフォルトの名無しさん [2022/10/17(月) 17:47:22.14 ID:LwSzkOCXr.net] すみません、質問させてください range内の空白セルを除いた部分を一気に配列に入れる方法ってありますか? 例えばA1、B2、A3、B3に1が入っていて、Range(Cells(1,1) ,Cells(2,2))を選んでいる状態で配列ArrにArr(1,1)=1、Arr(1,2)=1のみを入れる。ということです 「Range(Cells(1,1) ,Cells(2,2))を選んでいる状態」というのはFunctionで関数を作ったときにこの範囲を選んでいるという意味です CurrentRegionを使ってもA2、B2の空白まで配列に入ってきてしまって困ってます
866 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 17:53:55.90 ID:c98RAUt6M.net] selectionでforeach回せばできる気がするけどな
867 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 18:05:29.40 ID:PbBQX3S8M.net] 一気にやるなら判定文をスピルで一気に適用するか
868 名前:デフォルトの名無しさん [2022/10/17(月) 18:22:32.67 ID:KXCnFpZrr.net] すみません、先程の質問の意図はvba 100本ノックの以下の問題を解いていましたhttps://excel-ubara.com/vba100/VBA100_062.html 最初に範囲内を配列にすべて入れてdictionaryで出す方法を考えたんですけど、範囲のところがA1:C5とかならいいのですが、A:Cだと、すべての行まで配列に入ってしまって、それの行すべて処理するようになってしまったので、数字が範囲内の最終行までを配列に入れることができれば処理速度も変わるので、そういう方法があればという質問でした
869 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 18:56:02.19 ID:eqEJLsQnM.net] 答えも解説も書いてあるんだからそれ見ろよ
870 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 20:25:02.38 ID:sP2+Ci5U0.net] >>864 へーそんなのあるのか
871 名前:デフォルトの名無しさん [2022/10/17(月) 21:15:18.56 ID:8otnrSal0.net] 作成依頼です。 G列に空白セルがあった場合、その空白セルの隣のセルに入力されている値をクリアにする。 というコードを作成いただけないでしょうか。 よろしくお願いします。
872 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 22:12:03.14 ID:ISXu5HOG0.net] いやです
873 名前:デフォルトの名無しさん [2022/10/17(月) 22:18:07.47 ID:+NOpXqIT0.net] 待て、これは孔明の罠だ
874 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 22:23:49.67 ID:AIOop8Dz0.net] F、G、H列を無条件で消せばいいのね
875 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 22:24:49.52 ID:tLF3dHHy0.net] 隣とはどっちだ あまりにも指示が不明瞭でバカが書いたとしか思えない文章 スルーで決定
876 名前:デフォルトの名無しさん [2022/10/17(月) 22:28:51.88 ID:dYe0p6CB0.net] >>871 マジレスするとここは質問スレであり 作成要請スレではありません。 作る方法等を聞けば教えてくれる人もいるかも知れませんが、作ってくれと丸投げにした場合、 その見返りを要求されるか一蹴されるかして終わるのが関の山です。 自分でそう言った趣旨のスレを探すか立てるかした方が賢明と思われます。
877 名前:デフォルトの名無しさん mailto:sage [2022/10/17(月) 22:46:52.95 ID:/WpPTN/JH.net] >>871 welcome to https://mevius.5ch.net/test/read.cgi/tech/1434079972/
878 名前:デフォルトの名無しさん [2022/10/17(月) 23:47:38.34 ID:yX88xE7Ya.net] >>874 消す方だったか、"クリア"って書くのかと思ったぜ
879 名前:デフォルトの名無しさん [2022/10/17(月) 23:49:43.92 ID:+NOpXqIT0.net] >>878 甘い 空(そら)と白(しろ)で合わせて空白まで読み取らないと
880 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 05:15:15.98 ID:s0SrGZFEa.net] 4000件くらいのデータのExcelファイルから A. 特定の数十件の社員データを除いたデータファイル B. Aで除いた数十件の社員のデータのみのファイル を作成しなければなりません 元のファイルを2つFileCopyして ・Aから対象社員のデータをUINONメソッドでRangeに格納して一括削除 ・Bから非対象社員のデータをUINONメソッドでRangeに格納して一括削除 もしくは ・Aから対象社員データをAutoFillterしてBに貼り付け →Aから対象社員データ削除 を考えてますがどちらが速いでしょう 元の書式を活かしたExcelファイルが必要なので CSV出力やExcelファイルにデータのみ転記することはできません
881 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 05:41:41.52 ID:o16XpPR+M.net] 何度も繰り返し行なう作業とか面倒な作業ならVBA使うメリットもあるけど、その程度ならシートコピーとフィルターでさっさと手作業で済ませた方が手っ取り早いのでは?
882 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 07:10:04.49 ID:v8qBslO70.net] >>880 画面の書き換えだけ止めとけば、たぶん、どの方法でも大差ないと思うよ Unionは重いから、削除は一括じゃない方がいいかも 気になるならベンチマークとってみれば?
883 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 07:14:36.77 ID:NY9qjYA4d.net] >>876 >コード書き込みや作成依頼もOK 1をよくみような
884 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 08:05:51.17 ID:YCyRiw4bM.net] 個人的にはコード作ってとか書かれてたら困ってるんす金くださいと言われてるくらい嫌なので余計に作らないわ~ 書くのは勝手だけど
885 名前:デフォルトの名無しさん [2022/10/18(火) 08:46:11.19 ID:q+c/s7kpM.net] 誰もお前には頼んでないのに、俺は作らない宣言しちゃう人って自意識過剰すぎません?
886 名前:デフォルトの名無しさん (ワッチョイ 2bcd-7iBv) mailto:sage [[ここ壊れてます] .net] >>871 1:30で書けたけど・・・ これぐらい書くのにみんなどれぐらい時間かかるもんなの? Sub foo() 最終行 = Cells(Rows.Count, 7).End(xlUp).Row For i = 1 To 最終行 If Cells(i, 7) = "" Then Cells(i, 6) = "" Cells(i, 8) = "" End If Next End Sub
887 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 09:45:31.08 ID:345TXlIrM.net] >>880 回答待つより実際に作って比較した方が早くない?
888 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 10:14:58.17 ID:UuGhYYcHd.net] >>887 いい回答だと思う 自分でやればわかることを他人に聞くのってほんとバカなのかなと思う
889 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 10:42:22.37 ID:fjjhfMGv0.net] >>871 Ruby で作ってみた。 未入力の列はnil となるので、a, c も未入力となる require 'csv' input_text = <<TEXT ,a b,b ,c TEXT output_text = String.new CSV.filter( input_text, output_text ) { |row| row[ 1 ] = nil unless row[ 0 ] # nil の時 } print output_text 出力 , b,b ,
890 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 11:09:36.18 ID:NJQ5BOf00.net] >>885 で、誰もお前に意見聞きたいとか頼んでないのにどうしてそんな自意識過剰な反応してんの?
891 名前:デフォルトの名無しさん mailto:sage [2022/10/18(火) 13:16:40.55 ID:O7d9QRYR0.net] >>889 見づら! なにこのクソ言語
892 名前:デフォルトの名無しさん [2022/10/18(火) 14:44:23.15 ID:5fCnmsLA0.net] >>886 2~3分だな90分もかからんよ