エクセルで毎日の業務で手計算している作業をVBAコードかいて試しているのですが、縦と横の検索で行き詰まってしまい質問しました。どうぞよろしくお願いします。
_A__B____C____D__E__F___G___H
1|
2|_______その他_1~3_4~6_7~10_11~20_21~30
3|
3|__項目A___ 0___50__49__46___43__40
4|__項目B___ 0___45__44__39___37__34
5|__項目C___ 0___43__42__34___30__ 28
行
*このデータは現在(B3:V42)にあり今後増える可能性あり
*1行目とA列は空白です。
*2行目とB列は対応する項目です。
*3行目は関係ない値が入っています(データをつくる為の値)
このようなデータが、"Sheet2"にあると仮定します
"Sheet1"のシート上に配置したComboBox(コントロールツールボックスの)に検索値があります。
(ComboBox1 → 数値 , ComboBox2 → 数値 , ComboBox3 → 文字)*リストは"Sheet1"に登録してあります。
TextBox1 ÷ 2 の結果を小数点以下切上げし、これにTextBox2の値をかけたもの(仮にAAAとする)が、2列目のそれぞれのセルの数値範囲に対応し、TextBox3の文字列がB列に対応し、両検索結果の交わったセルの値を返すようにしたい。
例)もしAAAが「8」なら「F列」をみる。TextBox3 の文字列が「項目B」なら「4行目」をみる。この結果、交わったセルは「F4」なので、「F4」にある値「39」を"Sheet1"."A1"に返す。
また、これらコンボボックス(このシートとは別にテキストボックスを使うこともある)にはひとつずつchangeイベントでいきなり別シート("Sheet3")に書くコードが既に書いてあります。このセルから取り出すことも可能です。よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
たて列の検索はFind関数ですぐに出てくるでしょう
たて = ActiveSheet.Columns(1).Find(TextBox3).Row
横は・・・1~3_4~6_7~10_11~20_21~30
と表示するなら文字列になってしまうので、
そこから比較対象の値を無理やり抜き出しても良いのですが、
3_6_10_20_30
のように数字で表示した方が楽で良いかなと。
後はその範囲でループさせて一つ一つ値をチェックしていくとか。
For Each c In ActiveSheet.Range("C2:H2")
If c.Value >= AAA Then
よこ = c.Column
Exit For
End If
Next c
この回答への補足
説明が足りませんでした。
1~3_4~6_7~10_11~20_21~30については、検索値が1~3の間ならD列を4~6の間ならE列を・・・というようにしたいので、予めCaseなどで値に対応する列を登録しておく必要があるのかなぁ・・・とも思っています。
また、この値は、1000まであり、1列づつ値にしてしまうと1000列書かないといけなくなります。後のメンテの大変なので・・・
できたら、検索値がxなら何列をみて!と指示を出したいと思っているのですが、あまりVBAも詳しい方では無いのでこのあたりで苦戦をしております。
No.2
- 回答日時:
よく伝わってなかったようですが。
もしどうしてもシート上の表示を
2|__その他_1~3_4~6_7~10_11~20_21~30
としたいのであれば、
C列の最大値は3、D列の最大値は6とわざわざ抜き出すコードを追加しなければならないので、最初から最大値の3、6、10...だけの表示にしておけばという意味なんですよ。この表の横軸って連続値なんですよね??
※例えば1~5、8~10(6,7が無い)ではないですよね?
であれば最大値だけの表示でも意味は通じますし。わざわざコード上で列を登録しなくても表の値がそのまま利用できますし。
ということで
下記見本コードですと
2|__その他____3_6_10_20_30....
と書いておくことで
例えば「25」というような値が検索値であれば30の値が入っているセルの列数を引いてくるんですが。
正確に書くなら「最初に対象値>=検索値になった列数」です。この場合は30>=25が初めて条件成立したセルですのでそこの列数をとります。
この回答への補足
popesyuさん!ありがとうございます。理解しました。2|__その他____3_6_10_20_30.... としました。
で、早速試してみました。
1)TextBoxにコードを書いた為、TextBoxに入力中に実行されてしまいます。これは、とりあえずボタンを作ってこれで実行させました。できたら、最後のBoxが入力された時点で実行させたいです。
2)実行した結果、どの値を入れても「その他」を返してきます。その他を「0」にしたらその該当するセルの列数ではなく、該当するセルの値が返ってきました。(AAAが15なら20)
現在このように書いてます。
Private Sub CommandButton1_Click()
Worksheets("Sheet2").Activate
AAA = TextBox1 / 2
MsgBox AAA
For Each c In ActiveSheet.Range("C2:V2")
If c.Value >= AAA Then
よこ = c.Column
Exit For
End If
Next c
MsgBox c
Worksheets("Sheet1").Activate
End Sub
3)実際には、Sheet1でいろんな項目を書き込んでいくのでActivateSheetではなく動いてほしいのですが・・・これはしょうがないですよね。
4)たて = ActiveSheet.Columns(1).Find(TextBox3).Row
はすみません!理解できませんでした。
とりあえず書いてみたんですが、実行時エラー'91':オブジェクト変数またはWithブロック変数が設定されていません。といわれました。
お手数ですが、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) Excel_マクロ_複数のシートのVLOOKUPで表示された#N/A以外に色付けをしたいです 1 2023/02/16 22:37
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
白血球が多いとどんな心配があ...
-
至急!尿検査前日にオナニーし...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
尿検査の前日は自慰控えたほう...
-
EXCELで条件付き書式で空白セル...
-
腕を見たら黄色くなってる部分...
-
2つの数値のうち、数値が小さい...
-
勃起する時って痛いんですか? ...
-
EXCELで式からグラフを描くには?
-
精子が黄色?
-
飽和演算、ラップアラウンド演...
-
値が入っている一番右のセル位...
-
尿検査前日に自慰行為した時の...
-
リンク先のファイルを開かなく...
-
エクセル指定した範囲からラン...
-
excelでsin二乗のやり方を教え...
-
これって喉仏ですか? 私は女性...
-
口の中に黒い血の塊
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報