[[20240112104135]] 『WorksheetFunctionの使い方』(アール) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『WorksheetFunctionの使い方』(アール)

E列に年齢、F列に年代があり、年代は関数で「=INT(E2/10)*10」が入っています。これをVBAのWorksheetFunctionを使ってフィルダウンすることができますでしょうか。どのような記述をしたら良いか教えてください。

__E___F___
 年齢 年代
 52  50
 39  30

< 使用 Excel:Excel2021、使用 OS:Windows10 >


 2021なのでスピルを使えばいいんじゃないでしょうか。

 =INT(E2:E3/10)*10
(フォーキー) 2024/01/12(金) 10:53:16

説明不足でしたので追加します。
Range("F2") = WorksheetFunction.INT(E2/10)*10
として実行すると「オブジェクトはこのメソッドプロパティまたはメソッドをサポートしていません」とえらーになります。INT関数は利用できないということでしょうか?解決策がお判りになる方教えてください。
(アール) 2024/01/12(金) 12:54:10

 オートフィルしたいということだったのでは?
 セルに関数を埋め込みたいのではないのですか?

 ちなみにWorksheetFunction.INTはありません
 そのかわりVBA.Intが有ります
 ただの Int でもOK
(´・ω・`) 2024/01/12(金) 12:59:45

´・ω・`さん ありがとうございます。
Range("F2") = INT(E2/10)*10
で実行すると「0」が帰ってきました。何がいけないのか教えてください。

(アール) 2024/01/12(金) 13:28:21


 >Range("F2") = INT(E2/10)*10
 → Range("F2").Formula = "=Int(E2 / 10) * 10"

 スピルを使った例
 Sub test()
     Dim LastR As Long
     LastR = Cells(Rows.Count, "E").End(xlUp).Row
     Range("F2").Formula2 = "=Int(E2:E" & LastR & "/ 10) * 10"
 End Sub
(フォーキー) 2024/01/12(金) 13:36:43

 VBAだからスピルじゃなくて良かったかも

 >Range("F2").Formula2 = "=Int(E2:E" & LastR & "/ 10) * 10"
 Range("F2").Resize(LastR - 1).Formula = "=Int(E2 / 10) * 10"
(フォーキー) 2024/01/12(金) 13:49:15

 > Range("F2") = INT(E2/10)*10
 > で実行すると「0」が帰ってきました。何がいけないのか教えてください。

 E2はE2セルとは無関係な、E2という変数と解釈され、
 それは何も代入していないので、計算上 0と解釈されているためです。

 そもそもモジュールの冒頭に、Option Explicitを入れる方式にしておけば、
 E2が未宣言の変数と察知して警告を出してくれます。
 そのような自動設定(Option Explicitの自動挿入)ができますので、調べて
 そうした設定にしておくことを推奨します。
http://officetanaka.net/excel/vba/beginner/06.htm
 を参照。

 文字どおりフィルダウンするなら、
 FillDownメソッドがあります。Range("F2:F3").FillDown です。

 WorksheetFunctionというのは、VBAのなかでワークシート関数を計算手段に用いるためのものです。
 WorksheetFunction.Intが機能しないのは既に説明がありました通り。

 > WorksheetFunctionを使ってフィルダウンすることができますでしょうか。
 に対しては「できません」がストレートな答え。こういうのは"虻蜂取らず"といいます。
(xyz) 2024/01/12(金) 13:57:00

フォーキーさん ありがとうございます。
Value、Formula、Formula2 なんとなくですが理解しました。

XYZさん 知らぬ間に2つの質問をしていました。失礼しました。
(アール) 2024/01/12(金) 17:24:31


 それでこちらの説明は理解されたのでしょうか。
 ・Option Explicitの自動設定はされました?
 ・WorksheetFunctionは式をセルに作成する機能は持たないこと、
 ・FillDownメソッドの使いかた、等々。
 失礼しましただけで済まされても困ります。

(xyz) 2024/01/12(金) 18:20:24


>INT関数は利用できないということでしょうか
WorksheetFunctionではワークシート関数でVBA関数と同じ名前の物は使用できません
VBA関数については以下のサイトを参考にしてください。
https://excel-ubara.com/EXCEL/EXCEL903.html

(IT) 2024/01/12(金) 20:36:13


 「Visual Basic で使用できるワークシート関数一覧」はこちら↓を参照してください。
https://learn.microsoft.com/ja-jp/office/vba/excel/concepts/events-worksheetfunctions-shapes/list-of-worksheet-functions-available-to-visual-basic
(xyz) 2024/01/12(金) 23:09:56

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.