プロが教える店舗&オフィスのセキュリティ対策術

A列~L列、十二列にそれぞれ1月~12月のデータがあります。
別シートで年月のコンボがあり、1月を選ぶとA列のデータを取得する、2月を選ぶとB列のデータを取得する...
セルに値を一つ一つセットするのも可能ですが、すごく手間がかかります。
1月のデータだけセット(A列のデータを取得)して、
              2月を選ぶ時、列+1、B列になる
              3月を選ぶ時、列+2、C列になる
              4月を選ぶ時、列+3、D列になる
.....
こんな機能をソースをどうやって書けばよいでしょうか。
説明がうまくできず申し訳ございません。
皆様のご知恵を借りていただきたいと思います。
宜しくお願い致します。

A 回答 (3件)

HLOOKUP関数は検討しました?

    • good
    • 0

こんばんは



具体的なセル位置等がさっぱりわからないので、要領の例のみです。

>2月を選ぶとB列のデータを取得する
取得してどうしたいのかわからない。

>すごく手間がかかります。
「手間がかかる」とは思えませんが、何に手間がかかるのでしょうか?

>こんな機能をソースをどうやって書けばよいでしょうか。
どんな機能なのかわからないので、コードにしようがありません。

以下、ご参考にでもなれば・・・
  n = 1 'コンボボックスの値を1~12に変換した値

 'データのあるシートの1~20行迄が取得したいデータの場合の例
  Set rng = Worksheets("データのあるシート").Range("A1:A20").Offset(, n - 1)
  V = rng.Value
 '変数rngには対象になるセル範囲、Vにはその値が配列で取得できる


※ どこかのセルに、値をそのまま表示したいだけなら、関数を設定しておくだけで、マクロなんぞを作成する必要もなさそうに思いますけれど・・・
(↑実態がわからないけれど、こちらがお勧めかな?)
    • good
    • 0

こんばんは、


この コンボがあり は、何のコンボボックスでしょう?
シートと言う事なのでフォームかActive Xコントロール?
入力規則のリストでは無いと思いますが、、、

フォームのDropDownsと仮定すると 
ListIndex を使用してOffsetで位置を指定してResizeで拡張範囲を
指定すれば良いと思います

サンプル

Sub ドロップ1_Change()
With Worksheets("Sheet1").DropDowns("ドロップ 1")
Range("A1").Offset(, .ListIndex - 1).Resize(Cells(Rows.Count, .ListIndex).End(xlUp).Row).Select
End With
End Sub

コンボボックスに1月~12月が入っている場合
(コンボボックス1行目は空白でなく1月の場合)
空白の場合は-2、Resizeは-1で
MsgBox .ListIndex などで確認するのもありかも

ドロップ 1は該当名にしてください。

選択範囲を確認して良ければ、範囲をいかようにも出来るかと思います

当てずっぽですが、どうでしょう
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!