質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

856閲覧

vba min値に対応する値の算出

somechan1

総合スコア17

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/11/20 01:53

編集2020/11/20 02:48

業務効率化のため、実施したいことがあるのですが、やり方が思いつかず、質問させて頂きます。

【具体例】

A列:2000年1月 ~ 2020年12月
B列以降:それに対応した売り上げ

【実施したいこと】

①:B列以降の列毎の最少の売上値を求める。
②:その最少売り上げに対するA列の値を求めたい。

【困っていること】
①はもちろん算出できますが、②のコードが思い付きませんでした。

【現在までのコード(①まで)】

Sub 最小値()

Dim wave As Worksheet Dim thicknenn As Worksheet Dim i As Long Set wave = Worksheets("テキスト") Set thickness = Worksheets("結果") For i = 1 To thickness.Cells(1, 5).Value wave.Cells(4, i + 1).Value = WorksheetFunction.Min(Range(Cells(307, i + 1), Cells(407, i + 1))) Next i

End Sub

これ以降の②に対応するコードなど、御教授したく、今回質問致しました。
アイデア頂けると幸いです。宜しく御願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/11/20 02:02

今出来ているところまでのコードを掲載してください。
hatena19

2020/11/20 02:05

求めた値をどこに表示するのですか。あるいはどこで利用するのですか。 シート上に表示するならセルに式を設定するのではだめですか。 VBAのコード内で利用するということですか。 できないなくてもいいので現状のコード(式)を提示してください。 ①はできているということなので、最低限それは提示できますよね。
somechan1

2020/11/20 02:49

言葉足らずで申し訳御座いませんでした。 質問欄にコードを記載致しました。 最小値に対応する売り上げは、その下の5行目に記載したいです。 宜しく御願い致します。
Usirow

2020/11/20 03:52

コードを読んでも、なおのことセルの数式でやったほうが早くて簡単そうに見えるのですが、それではダメなのでしょうか。INDEX関数とMATCH関数などのメジャーなやり方で十分実現できますよ。
somechan1

2020/11/20 22:50

ご回答ありがとうございます。 調査不足ですいません。 まずはINDEX関数とMATCH関数でトライ致します。丸投げのような質問で申し訳御座いませんでした。
guest

回答1

0

ベストアンサー

For Next文のコードを下記に変更すればどうでしょうか。

vba

1Dim rng As Range 2Dim minValue As Long 3For i = 1 To thickness.Cells(1, 5).Value 4 Set rng = Range(Cells(307, i + 1), Cells(407, i + 1)) 5 minValue = WorksheetFunction.min(rng) 6 wave.Cells(4, i + 1).Value = minValue 7 wave.Cells(5, i + 1).Value = Cells(WorksheetFunction.Match(minValue, rng, 0) + 1, 1) 8Next i

数式でするなら、

最小値を表示したい最初のセルに下記の式を設定
=MIN(結果!B2:B6)
データ数分右にフィルドラッグ

年月を表示したい最初にセルに下記の式を設定
=INDEX(結果!$A2:$A6,MATCH(結果!B8,結果!B2:B6,0))
データ数分右にフィルドラッグ

投稿2020/11/21 00:16

編集2020/11/21 00:37
hatena19

総合スコア34084

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

somechan1

2020/11/24 00:31

返答が遅くなり、申し訳御座いませんでした。 上記参考にして実施致します。 記載頂き、有難う御座いました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問