2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Excel VBA 質問スレ Part58

1 :デフォルトの名無しさん:2018/11/19(月) 06:47:24.99 ID:Qq88xGOU.net
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK


※前スレ
Excel VBA 質問スレ Part57
https://mevius.5ch.net/test/read.cgi/tech/1536583359/

2 :デフォルトの名無しさん:2018/11/19(月) 09:52:02.94 ID:5k0nvJVR.net
>>1

3 :デフォルトの名無しさん:2018/11/20(火) 22:35:35.36 ID:HCcZ0ovU.net
Dim Otimpo As Variant
Set Otimpo = New Penis
Otimpo.Insert Woman.Vagina

4 :デフォルトの名無しさん:2018/11/20(火) 22:46:03.40 ID:vvK8gepa.net
俺だったらInsertToメソッドにする

5 :デフォルトの名無しさん:2018/11/22(木) 09:37:41.30 ID:ZIGZU+Kk.net
>>1
=LEFT("おつかれあかたあまや",4)

6 :デフォルトの名無しさん:2018/11/22(木) 09:49:09.43 ID:hMczrcoU.net
昭和の臭いプンプン

7 :デフォルトの名無しさん:2018/11/22(木) 11:44:50.42 ID:DvNJLexV.net
昭和なら $ 付けるだろ

8 :デフォルトの名無しさん:2018/11/23(金) 09:01:48.81 ID:pYaMx0la.net
ややExcelと離れるのですが、他に適切な場所が見当たらないのでこちらで質問。

WordやPowerpointに、埋め込み、またはリンクで表示されているExcelの表やグラフについて、
1:ファイル名(フルパス、ないし相対パス)
2:表示されているシート名(またはシート番号)
3:表示されている表の範囲(A1からB20まで、みたいな)
を、WordやPowerpointで動かすVBAから列挙する、みたいなのを作りたいと考えてます。

(1)についてはある程度(たまに取れないのがある)なんとかなるのですが、
(2)と(3)の手段が分からないでいます。
この辺を得る手段について、ご存じの方いましたら教えてください。

9 :デフォルトの名無しさん:2018/11/23(金) 10:13:26.49 ID:NlhnMW/X.net
表示されているシート名 って要は現在アクティブなシートってことでしょ?
ActiveSheet.Nameで取れるんじゃ?

10 :デフォルトの名無しさん:2018/11/23(金) 11:15:52.26 ID:OdmoxaxG.net
>>8
やったことがないから保証できないが、
OLEObject.ObjectプロパティからOLEオブジェクトのコントロールを取得できるはず
ここからExcelのオブジェクトモデル経由でシート名等は取れるかも

11 :8:2018/11/23(金) 11:27:11.08 ID:pYaMx0la.net
>>9,10

 そういえば、シート名はそれで取れますね。うっかりしてました。
ただ、Powerpointで表示されている、シート上の範囲( >>8 の(3) )がマジわからん。
ActiveSheetまでは到達出来るので、シート全体のデータは取れるのだけども、
表示範囲となるとどこを見れば良いのやら……

12 :デフォルトの名無しさん:2018/11/23(金) 16:52:45.93 ID:NlhnMW/X.net
表示範囲っての意味がよく判らない。使用されている範囲ならUsedRangeプロパティだけどそうじゃない?

13 :デフォルトの名無しさん:2018/11/23(金) 18:46:47.55 ID:A5v+c7Q3.net
QueryTables.addを利用して取り込んだテキストデータを
TextFileFixedColumnWidths = array(5,4,2)
とVBソースに記述して5、4、2バイト目で区切ってエクセルに貼り付けしているのですが、
このarrayのカッコ内の値5,4,2の部分を1つのセル内に定義しておき、そこから取得して処理する方法を教えてください。(セル値を変えるだけで区切りバイトを変えられるようにしたいです)
セル内の定義は下記のような感じの形式で実現できたらいいなと思っています。
5,4,2
または
"5","4","2"
など
よろしくお願いします。

14 :デフォルトの名無しさん:2018/11/23(金) 18:47:07.61 ID:pYaMx0la.net
>>12
UsedRangeは、まさに「Excel上で利用されている範囲」になるので、ちょっと違う。

探しているのは、(WordとかPowerpointとか) 「被貼付側から見えている範囲」。
コピペを行うときにExcel上で範囲指定してる、まさにその範囲の情報が欲しいのです。
『広い範囲が使われているシート(埋め込みオブジェクト)の一部分だけが表示されている時、
 その表示部分を特定する』がやりたいの。

15 :デフォルトの名無しさん:2018/11/23(金) 20:29:14.68 ID:SJrbhhQk.net
>>13
3つパラメータがあるならそもそも3つのセルで管理すればいいんじゃないかと思うが、区切る回数も動的にしたいのかな?

パラメーター記述用のセルに5,4,2と入力しておいて、コード内でSplit関数を使いそのセルの値をカンマ区切りで配列化するのが普通かな

そうやって得たString配列の要素全てをCIntで型変換してInteger配列に入れ直せば、TextFileFixedColumnWidthsプロパティに代入できる

16 :デフォルトの名無しさん:2018/11/23(金) 20:45:52.52 ID:A5v+c7Q3.net
>>15
区切る回数も動的にしたいんです。
さっそく試してみます。ありがとうございます。

17 :デフォルトの名無しさん:2018/11/24(土) 07:26:12.22 ID:XV/jbN3E.net
>>15
無事にやりたいことが実現できました。ありがとうございました。勉強になりました。

18 :デフォルトの名無しさん:2018/11/26(月) 18:21:38.61 ID:jE4mmGCd.net
ユーザーフォームのボタンでExcel以外のファイルを開くのにShell.Execute使ったんだけど、ボタンを押しても何も反応しない

CreateObject("Shell.Application").ShellExecute "c:\test\test.pdf"

19 :デフォルトの名無しさん:2018/11/26(月) 19:08:14.69 ID:sSO4v+r+.net
>>18
試してみたけど、そのコードで問題なく動くなあ

20 :デフォルトの名無しさん:2018/11/26(月) 19:30:02.47 ID:VtKrTehC.net
>>18
デザインモードがオンになってるとかじゃね

21 :デフォルトの名無しさん:2018/11/26(月) 20:06:27.80 ID:c8QT25Tm.net
検証ありがとう!
ちな標準モジュールに書くと普通に動く。
どうもユーザーフォームに書くとダメみたい

22 :デフォルトの名無しさん:2018/11/26(月) 20:09:03.00 ID:c8QT25Tm.net
>>21
違った
ユーザーフォームじゃなくてユーザーフォーム内のボタンね

23 :デフォルトの名無しさん:2018/11/26(月) 22:08:01.92 ID:sSO4v+r+.net
ユーザーフォーム作ってボタン配置してボタンのOnClickにコード書いたけど問題ない

24 :デフォルトの名無しさん:2018/11/26(月) 22:25:28.75 ID:c8QT25Tm.net
みんなマジか〜
環境は2010、2007ともにダメだった。
明日2016で試してみる。
ちなみにパスがフォルダ指定までなら動く。
もう意味わからん

25 :デフォルトの名無しさん:2018/11/26(月) 22:57:14.49 ID:sSO4v+r+.net
>>24
もしかしてpdfをダブルクリックした時に「このファイルを開くアプリ」の選択メニューが出てない?

26 :デフォルトの名無しさん:2018/11/27(火) 08:58:52.14 ID:TmwvOLJp.net
>>25
すまぬすまぬ。実は開かないのは.xlsxや.xls。
さっきやったら.txtや.bmpに書き換えるとちゃんと動いた。関連付けがおかしいかと思ったけどファイルダブルクリックでexcelファイルは開く。

27 :デフォルトの名無しさん:2018/11/27(火) 09:23:34.69 ID:OWqQZ565.net
さすがにExcelはOpen関数使えよ。。。

28 :デフォルトの名無しさん:2018/11/27(火) 11:44:24.61 ID:Y7caogE6.net
>>27
やっぱりそうですよね、、
ありがとうこざいました!

29 :デフォルトの名無しさん:2018/11/27(火) 21:03:19.26 ID:JHhXTC3j.net
>>26
VISTA32ビットのEXCEL2007で再現した
ちなみにブレークポイントはってステップインさせたらちゃんと動いた

30 :デフォルトの名無しさん:2018/11/28(水) 21:03:32.22 ID:btdWGy6U.net
切り取り・コピーしようとしたら「クリップボードを開くことが」と表示されました 前までは正常に出来てたのに急にあんなになるなんて
どうしたらなおるんですか

原因不明の謎の症状

31 :30:2018/11/28(水) 21:11:36.27 ID:btdWGy6U.net
>>30のところ、再起動したら直りました
自己解決

32 :デフォルトの名無しさん:2018/11/28(水) 21:55:41.99 ID:6iHSQiFE.net
WorksheetFunctionを使うと遅くなると聞きました。セルで計算して取得したほうがいいですか?

33 :デフォルトの名無しさん:2018/11/28(水) 22:15:02.98 ID:T0n8cI1t.net
>>32
遅いと言っても、よほど大量のデータを処理しない限り大差ないから気にしなくていい

34 :デフォルトの名無しさん:2018/11/28(水) 23:27:06.65 ID:6iHSQiFE.net
>>33
ありがとうございます

35 :デフォルトの名無しさん:2018/11/30(金) 08:07:23.94 ID:yuW+a+er.net
workbook.Aのマクロから、workbook.Bのマクロパスワードを解除できますか?
*パスワードは分かっています
**windows10 / excel 2016

同じパスワードをかけた大量のファイルのマクロパスワード解除が必要になった為

36 :デフォルトの名無しさん:2018/11/30(金) 08:09:10.42 ID:cHj05URw.net
できるかと言えばできる。

37 :デフォルトの名無しさん:2018/11/30(金) 08:53:39.83 ID:yuW+a+er.net
>>36
ありがとうございます。

VBAでsendkeyでパスワード入れたいのですが、プロジェクトエクスプローラーのウィンドウで、目的のworkbook.Bを選択してパスワードウィンドウを開く事がうまくできないところです。

38 :デフォルトの名無しさん:2018/11/30(金) 09:06:54.20 ID:cHj05URw.net
>>37
いや、Sendkeysは絶対使っちゃいかんものNo.1だろ。
制御出来ないからな。
わかってて一過性のプログラムで使う以外に使うことは無い。

39 :デフォルトの名無しさん:2018/11/30(金) 11:07:00.94 ID:yuW+a+er.net
>>38
ご忠告ありがとうございます。

40 :デフォルトの名無しさん:2018/11/30(金) 12:03:29.38 ID:LyLvfax5.net
>>35
MSDNライブラリでWorkbookオブジェクトのOpenメソッドの説明を詳しく読めば解決

41 :デフォルトの名無しさん:2018/11/30(金) 18:19:35.02 ID:RELaXAo9.net
>>40
マクロのパスワード解除ってワークブックオープン関係なくね。

42 :デフォルトの名無しさん:2018/11/30(金) 18:57:50.86 ID:cHj05URw.net
そもそもマクロパスワ―ドってことはVBEを弄ることになるから普通はセキュリティ設定に引っかかる。

VBAでVBEを弄れる設定になってるなら、参照設定でVisualBasic for Applications Extencibilityを追加して頑張ることになるわけだけどセキュリティ皆無となって危険だぞ。

それにそのコードがウィルス判定されるかも。

43 :デフォルトの名無しさん:2018/11/30(金) 19:30:48.61 ID:D2Lo7Qd2.net
>>41
この質問者が「解除」という言葉で言いたいのは、パスワードなしのファイルとしてファイルを再保存することじゃなくて、ただ単に読み取りパスワード付のファイルを普通に実行することだと思うぞ
Sendkeysとか恐ろしいことを上で言ってるので

44 :デフォルトの名無しさん:2018/11/30(金) 23:26:49.39 ID:1+TlpALp.net
>>43
プロジェクトエクスプローラーって言ってるのにそんなわけ無いだろ

45 :35:2018/12/01(土) 07:37:11.82 ID:0dTVd6NK.net
>>43
マクロのロック解除です。

ワークブックと書いて混乱を招いてしまいました。
ファイルは開けます。

現状はマクロでVBAをアクティベートし、vbkeyで操作する方法で試してますが未だにうまく動かないです。

46 :デフォルトの名無しさん:2018/12/01(土) 12:13:55.48 ID:bMs1CWzL.net
>>45
VBAのsendkeyは不安定なので、vbsとかを経由しろとか聞いたことある気がする。ちょっと調べてみては?

47 :35:2018/12/01(土) 12:16:20.34 ID:0dTVd6NK.net
>>46
ありがとうございます。
試してみます。

48 :デフォルトの名無しさん:2018/12/01(土) 12:20:42.98 ID:TS4bNkMJ.net
フォルダ内にある全てのtxtファイルをピボットテーブルで変換して一つのファイルに結合するにはどうしたら良いですか?

49 :デフォルトの名無しさん:2018/12/01(土) 12:22:51.76 ID:TS4bNkMJ.net
>>48
一つのテキストファイルあたりExcelの104万行を超えています

50 :デフォルトの名無しさん:2018/12/01(土) 12:30:20.41 ID:Yrektqt+.net
>>49
Accessに取り込んで104万件以下に整理してからExcelに読み込む

51 :デフォルトの名無しさん:2018/12/01(土) 13:39:55.20 ID:TS4bNkMJ.net
>>50
Accessで一括に読み込めますか?

52 :デフォルトの名無しさん:2018/12/01(土) 17:27:15.14 ID:qC6lat5H.net
>>47
vbsとか経由でも駄目だろ。
何が駄目かと言うと入力したい所にピンポイントで入力するわけじゃ無いところ。
直前に入力したい所にフォーカスを当てるとか工夫してる人もいるけど根本的によろしく無いんだよ。
動かしてる時に別の何かをクリックしたりするとそっちに入力されちまう。

改めて確認するけどVBAがパスワード保護されてコ―ド編集出来ない状態になっている。
パスワードは分かっていて手動で解除出来るけどブックが大量で解除と再設定が大変という問題?

53 :デフォルトの名無しさん:2018/12/01(土) 17:45:25.58 ID:qC6lat5H.net
>>51
そのテキストファイルはどんなファイル?
データベースのデータのようなものなの?
その104万行というのは、そもそも全部必要なの?

全部必要じゃない、特にもし必要なのはごく一部というのだったら、テキストファイルとして開いて1行ずつ読み込んで、必要あるデータのみ抜き出すという方法が良いと思う。

全部必要だったらAccessを使うべきデータ量だな。
でも、そのデータをどんな風に扱いたいか分からないから一概には言えない。

54 :35:2018/12/01(土) 17:56:01.08 ID:0dTVd6NK.net
>>52
おっしゃる通りです。
マクロで大量に作ったマクロパスワードが同じファイルのパスワードを解除し、マクロを消すプログラムを作りたいです。
マクロを消すプログラムはマクロパスワード無しのファイルに関しては全てうまく動いています。
またエクセルファイルにはパスワードはかけていません。

過去に作ったエクセルファイルは残したままマクロを全て消せとの指令で必要となっています。

55 :デフォルトの名無しさん:2018/12/01(土) 18:47:27.12 ID:X1CAEXrd.net
xlsxで保存すればマクロは消えない?

56 :デフォルトの名無しさん:2018/12/02(日) 12:24:29.74 ID:RxJGbltM.net
そんな大量のデータ、一行ずつ読んでたら日が暮れるぞ。
バイナリモードで開いてメモリの許す半範囲で読んで、末尾の改行までを消すの繰り返して読み込んだ方が遥かに早いよ

57 :デフォルトの名無しさん:2018/12/02(日) 13:35:42.09 ID:QrHhUpeR.net
100万行越えのデータは、まず複数列、複数シートを使って読み込んでみれば?
内容によっては固まって何もできなくなる悪寒しかないけど

58 :デフォルトの名無しさん:2018/12/02(日) 17:24:20.84 ID:L8bj4c7S.net
100万行が大量か?
それはどんな100万行かによる。
100万個の改行だって100万行だ。

59 :デフォルトの名無しさん:2018/12/02(日) 17:27:05.82 ID:L8bj4c7S.net
>>54
>>55が書いてるようにxlsxで保存するようなのは駄目なのか?

60 :デフォルトの名無しさん:2018/12/02(日) 21:09:54.29 ID:V0qE8100.net
ユーザーフォーム上のクリックボタンが、Tabで通過する分には何も起こらないのだけどカーソルキーで通過するとチェック入るのだけど、コード書いて制御するしかない?

61 :デフォルトの名無しさん:2018/12/02(日) 22:14:16.48 ID:KrKU+109.net
クリックボタンにチェックとは?

62 :デフォルトの名無しさん:2018/12/03(月) 00:04:08.66 ID:X8MytAwB.net
EXCELのVBA使いたいのですが
どうやったら起動できますか?
最初からEXCELにソフト入ってるんですか?

63 :デフォルトの名無しさん:2018/12/03(月) 00:39:02.99 ID:eKdLT8zi.net
Microsoft Visual Basic for Applications(VBA)エディターが開きます。

Alt+F11

64 :デフォルトの名無しさん:2018/12/03(月) 07:02:37.21 ID:F098t6Ls.net
>>61
すみません、チェックボックスでした

65 :デフォルトの名無しさん:2018/12/03(月) 19:46:40.74 ID:zpf7CT60.net
>>55
>>59

xlsx保存し元ファイルを全て消すでやりたい事ができました。
ありがとうございます

66 :デフォルトの名無しさん:2018/12/03(月) 23:49:02.49 ID:Ks+qj00w.net
フランス政府からマクロン消したら市民が泣いて喜ぶよね
ありがとうございます

67 :デフォルトの名無しさん:2018/12/04(火) 00:09:42.14 ID:fkKXq52U.net
>>62
まずは首を括れよ

68 :デフォルトの名無しさん:2018/12/04(火) 06:14:33.41 ID:Jf/aCYja.net
>>62
消えろ小僧

69 :デフォルトの名無しさん:2018/12/04(火) 09:00:31.20 ID:F519qlgb.net
"ab","bc","c
d"
みたいなcsvがあり、これを処理速度重視で読み込みたいんですがなにかいい方法無いですかね
なんか配列操作で計算、集計して最後シート出力すると早いと思うので配列に入れたいんですが1行ずつの読み込みだとうまく行かずで困ってます
fsoで全文読んでも改行されてますし…

70 :デフォルトの名無しさん:2018/12/04(火) 09:15:39.52 ID:TjlcF2tR.net
>>69
めんどそう
そんなんじゃ " のエスケープとかも考慮しなきゃいけないんでしょ?

だけど気合い入れてアルゴリズムごりごり実装するのを勧める

71 :デフォルトの名無しさん:2018/12/04(火) 09:18:52.95 ID:FU2ewWox.net
>>69
ボトルネックがFile I/Oならバイナリで全部読んでコンマでsplit
ただし文字列変数の限界は2GBなのでファイルサイズに注意

72 :デフォルトの名無しさん:2018/12/04(火) 12:54:59.46 ID:HOLQGFa9.net
どうでも良いけど1レコードの定義をちゃんとしないと膨大なカラムの1レコードデータになっちまうぞ。

バイナリ読み込みでやるのは確かに早いんだが、そこを気にする程のデータ量なのかなあ。
この間の100万行デ―タもサンプル作って読み込んだら10秒とかだったぞ。

73 :デフォルトの名無しさん:2018/12/04(火) 13:26:11.27 ID:F519qlgb.net
全文読んだ後にレコード単位に分けてカンマ区切りで分けてーをしっかりアルゴリズム書くて感じですかね
そこそこ面倒臭いですねこれ

74 :デフォルトの名無しさん:2018/12/04(火) 13:31:22.51 ID:nDNFtNox.net
セルコピーでValudatonの中身までコピーする方法ってありますか?
愚直にコピーすると設定したプルダウン情報が消えてしまいます

75 :デフォルトの名無しさん:2018/12/04(火) 17:53:21.87 ID:eg0Zt3qJ.net
>>73
エスケープなし、カンマのみ項目なし、改行のみ項目なしなら楽なんだけどね

76 :デフォルトの名無しさん:2018/12/04(火) 18:44:19.91 ID:F519qlgb.net
>>73
自己レス
adodb使ったらなんかいい感じにいけました

77 :デフォルトの名無しさん:2018/12/04(火) 23:45:07.95 ID:foGY0MAA.net
外部のExcelマクロを呼び出し、その処理の中でMsgBoxが表示された場合、それを呼び出し元で認識する方法はありますか?
Msgboxを操作したいとかではなく、表示されたということがわかればいいです

78 :デフォルトの名無しさん:2018/12/05(水) 01:51:39.17 ID:bmTXilR5.net
>>77
APIでHWNDを列挙

79 :SuperXLe:2018/12/05(水) 04:28:42.10 ID:eILZxtP+Y
Excelの面倒な操作をラクにする機能を40種類以上まとめた無料アドイン「SuperXLe」
目次作成、CSVの読み込み、ファイルのマージなど、汎用的な機能を豊富に用意
窓の杜で紹介されています。
https://forest.watch.impress.co.jp/docs/review/1156143.html
とっても便利です!!
作者サイト
https://superxle.amebaownd.com/

80 :デフォルトの名無しさん:2018/12/05(水) 08:11:01.31 ID:j7wcFAGs.net
>>77
外部のExcelマクロというのが別プロセスのExcel上で動いてるマクロという意味なら方法はある。

内部でもExcelが落ちる可能性を承知するならある。

81 :デフォルトの名無しさん:2018/12/05(水) 18:51:03.67 ID:cxhucZsa.net
>>78,80
APIでの実現方法がよくわからなかったので、呼び出されるマクロに認識用のモジュールを追加することにしました
ありがとうございました

82 :デフォルトの名無しさん:2018/12/05(水) 22:21:05.50 ID:LTu8VXCT.net
>>76
自己レス
adodbも面倒臭かったacces無いんでcsvのデータ型判定の為にschma.iniみたいなの作る必要あったり…
元の文字コードとかbomとか考慮しないといけないけどworkbookのopen使ってマズかったらエラー出した方が早かったかも

83 :デフォルトの名無しさん:2018/12/06(木) 08:13:12.56 ID:5yG8Yqq9.net
>>82
いい肥やしになったと思います

84 :デフォルトの名無しさん:2018/12/06(木) 23:32:22.39 ID:O2YT1bAS.net
肥やしって具体的には何のこと?

85 :デフォルトの名無しさん:2018/12/07(金) 08:39:50.57 ID:a2+Odvtp.net
普通にOpenしてLine Inputした方が速くて簡単だったんじゃない?
と思ったら文字コード?BOM?

最初の質問は何だったのか。
文字コード考えなきゃならんのなら、
最初から選択が限られるだろ。

86 :デフォルトの名無しさん:2018/12/07(金) 23:08:14.09 ID:vEdbg58X.net
まあでもsplitはないよな

87 :デフォルトの名無しさん:2018/12/07(金) 23:45:43.79 ID:ny7N65D8.net
データ内の改行やカンマを正しく解釈するためにモジュール自作してる

88 :デフォルトの名無しさん:2018/12/08(土) 08:49:31.99 ID:D25PXYri.net
データ内のダブルクォーテーションもあるで

89 :デフォルトの名無しさん:2018/12/08(土) 10:23:21.41 ID:qbpmcynn.net
この手のことはだいたい同じ事を先に考えている人がいるから、
参考にするなりDLして利用するなりすれば、やりたいことは秒で完成させられる
理解するのはまた別で、ちゃんとソース読めな話になるけど。

たとえば、「VBA CSV BAS」でググって即出るヤツだとこんなとか。
ttps://github.com/sdkn104/VBA-CSV

90 :デフォルトの名無しさん:2018/12/08(土) 11:33:49.23 ID:KOgxZmAl.net
Range("C1:C10") = "=A1+B1"
とセルに式を埋め込むと自動で A2+B2、A3+B3 とやってくれますが
WorksheetFunctionで上と同じ事を1行で簡単に書くことってできますか?
うまい方法思いつかないのでいつも 関数埋め込み→値貼り付けで式を消す とやってます
WorksheetFunctionのループは式の埋め込みより遅かったです

91 :デフォルトの名無しさん:2018/12/08(土) 15:59:33.39 ID:/nD5g8zA.net
>>90
わざわざVBAを使って、最後に値貼り付けするぐらいなら、俺ならVBAで計算して結果だけ書き込む
For r = 1 To 10
  cells(r, 3) = cells(r, 1) + cells(r, 2)
Next

式がワークシート関数バリバリでVBAで再現するのが面倒なら、最後の値貼り付けをVBAで書く
set r = Range("C1:C10")
r.Copy
r.PasteSpecial Paste:=xlPasteValues

92 :デフォルトの名無しさん:2018/12/08(土) 16:47:33.14 ID:X2RnV3YS.net
俺ならVBAで各セルに計算式埋めるけどな

93 :デフォルトの名無しさん:2018/12/08(土) 17:13:31.83 ID:Zw8nZFqz.net
Range("C1:C10").Formula = "=A1+B1"
Range("C1:C10").Value=Range("C1:C10").Value

94 :デフォルトの名無しさん:2018/12/08(土) 18:00:32.80 ID:FvhEiENk.net
>>90
人に教えてもらう分際で、一行でとか注文つけてんじゃねーよ。

95 :デフォルトの名無しさん:2018/12/08(土) 19:19:47.59 ID:I01ncySI.net
ワークシートか配列へ代入したり配列をワークシートに直接貼り付けたりって技いつ頃から一般的になった?
なんか20年前からやってたという人がいて本当かよと思ったんだが。

96 :デフォルトの名無しさん:2018/12/08(土) 20:28:45.94 ID:/nD5g8zA.net
>>95
特定の個人が知ってたのと、一般的かどうかなんて全然関係ないじゃん
ExcelもVBAも20年以上前からあるんだし、知ってても不思議じゃない

97 :デフォルトの名無しさん:2018/12/08(土) 20:53:05.77 ID:dkUbxCqg.net
>>96
ああごめんなさい
「そんなの20年前から一般的だったよ」みたいなニュアンスで言われたんですよ。
自分としてはここ2〜3年で知られた新しめのテクニックだと思ってたんで、「マジか?」と。

98 :デフォルトの名無しさん:2018/12/08(土) 21:00:40.14 ID:/nD5g8zA.net
20年前のことは知らんけど、さすがにここ2〜3年てことはない
もっと昔から知られてた

99 :デフォルトの名無しさん:2018/12/08(土) 21:04:04.90 ID:Ac8D4eVv.net
>>98
ですね。

そもそもいちいちセル移動して操作なんて、トロくさくてやってられん。

Google Apps Scriptなんかでも配列で操作なんて、速度稼ぐ為に普通に使う枯れたテクニック。

あまりにもセル操作という初歩だけが広まった弊害だね。

100 :デフォルトの名無しさん:2018/12/08(土) 21:07:43.53 ID:KOgxZmAl.net
A いつも自分がやっているやり方
Range("C1:C10000") = "=A1+B1"
Range("C1:C10000").Copy
Range("C1:C10000").PasteSpecial Paste:=xlPasteValues

B 90案
For r = 1 To 10000
Cells(r, 3) = Cells(r, 1) + Cells(r, 2)
Next

C 92案
Range("C1:C10000").Formula = "=A1+B1"
Range("C1:C10000").Value = Range("C1:C10000").Value

D 配列 
計算元の配列= Range("A1:B10000")
For i = 1 To 10000
計算結果格納配列(i, 0) = 計算元の配列(i, 1) + 計算元の配列(i, 2)
Next i
Range("C1:C10000").Value = ans

E 半分配列
For r = 1 To 10000
計算結果格納配列(r, 0) = Cells(r, 1) + Cells(r, 2)
Next
Range("C1:C10000").Value = ans

A0.035
B0.265
C0.031
D0.015
E0.062

総レス数 1003
302 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★