Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2010)
あいまい検索でアクテブにする
投稿日時: 18/02/07 10:56:46
投稿者: こまじろう

お世話になります
 
ご教示頂けたら幸いです
 
B列に日付(シリアル値)が入力されています
UserForm1のTextBox1にyyyy/mm/dd形式で日付を入力した時
コマンドボタン等使用して
yyyy/mm  年/月の間を選択したいです
又同時に 同列53行目も選択したいです
 
この質問の意図としましてこの範囲のグラフを作りたいのです
 
 
  ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Range( "$A$2,$E$2:$J$2,$A$53,$E$53:$J$53")
 
EからJ間列を可変としとTextBox1のデーターを元にその月の範囲を指定したいです
A2 及びA53はグラフタイトルになります
 
お手数お掛けしますが
何卒宜しくお願いいたします

回答
投稿日時: 18/02/07 13:06:46
投稿者: Suzu

こんにちは。
 
なんとなくやりたい事はわかるのですが、不明確な点がいくつか。。
 

引用:
B列に日付(シリアル値)が入力されています
UserForm1のTextBox1にyyyy/mm/dd形式で日付を入力した時
コマンドボタン等使用して
yyyy/mm  年/月の間を選択したいです

 
B列の値の中で、テキストボックス に入れた 年月日 の 年月のに該当するセルの行番号を知りたい。
 
だとは思うのですが、
 
1. B列の値は必ず昇順や降順で並んでいるのでしょうか。
2. 並んでいない場合、複数ブロックに分かれている事になりますが、
   その複数ブロックの全てを含めるのでしょうか。
 
 
 
引用:
EからJ間列を可変とし

これは「列」が可変という事でしょうか。 つまり、E〜Eの事もあるし、E〜Hまでの事もある。
それとも、EからJ の 「行」が可変となるという事でしょうか。
 
 
VBAで グラフタイトル を指定できますので
データソースにグラフタイトルとなるセルを含めなくとも良いです。

回答
投稿日時: 18/02/07 15:40:23
投稿者: 細雪

すいません、私も不明確なままでの回答ではあるのですが・・・
 
「ピボットグラフ」機能では事足りませんか?
作成からデータ更新、フィルタ適用まで「マクロの記録」できますので、
一度、手で試してみてはいかがでしょう?
 

投稿日時: 18/02/07 15:47:38
投稿者: こまじろう

早速問い合わせ有難う御座います
 
>1. B列の値は必ず昇順や降順で並んでいるのでしょうか。
申し訳御座いません 2行目です 必ず昇降順に並んでいます
 
>これは「列」が可変という事でしょうか。 つまり、E〜Eの事もあるし、E〜Hまでの事もある。
>それとも、EからJ の 「行」が可変となるという事でしょうか。
そのようになります
 
 
2行目に日付が入力されてまして行は一定で
y軸値が B2〜
x軸値が B53〜
 
誤併記があり申し訳御座いませんでした

回答
投稿日時: 18/02/07 16:08:12
投稿者: もこな2

メモ帳でぽちぽち書いている間に、質問者さんからのコメントついてますがとりあえず。
 
私の勘所が悪いのかもですが、質問内容が全然理解できません。
 
とりあえず、重箱の隅を突くような話ですけど、タイトルでアクテブ(たぶん、アクティブの打ち間違い)と仰っているので、セルをアクティブにしたいんだろうなぁ・・・思いましたが、そもそも、複数のセルを同時に選択することは可能でも、複数のセルを同時にアクティブにすることは出来ないと思われます。(違っていたらごめんなさい)
 
内容の方は、グラフって話が出てくるので、結局は、グラフのデータ元となる、任意のセル範囲をセル範囲を条件分岐によりつかむようにしたいのかなと推測しました。
 
そこでわからないのが、この部分です。

引用:
yyyy/mm  年/月の間を選択したいです

たとえば、「TextBox1」、「TextBox2」 とあって、それぞれに、yyyy/mm という形式で年月を入力したときに、B列の値が「TextBox1」以上 かつ 「TextBox2」以下に該当する行のE〜J列をセル範囲として取得したいとかであれば、なんとなく出来そうな気がしますけど、質問文を読む限りではそのようなことが読み取れないので、何をされたいのかよくわかりません。
 
なんか、データの並びのイメージの提示があると、理解できるかもしれません・・・
あんまり回答になってないですが、とりあえず。

回答
投稿日時: 18/02/07 17:04:24
投稿者: Suzu

もこな2 さんの引用:
そこでわからないのが、この部分です。
引用:
yyyy/mm  年/月の間を選択したいです

たとえば、「TextBox1」、「TextBox2」 とあって、それぞれに、yyyy/mm という形式で年月を入力したときに、B列の値が「TextBox1」以上 かつ 「TextBox2」以下に該当する行のE〜J列をセル範囲として取得したいとかであれば、なんとなく出来そうな気がしますけど

 
テキストボックスに、「2018/02/07」と入力した場合
 
データの 2018/02/01〜2018/02/28の範囲のデータ
 つまり テキストボックスに入力した日付の、年月の月初から月末までのデータを対象にしたい。
 
と言う意味かと判断しました。
 
 
引用:
>これは「列」が可変という事でしょうか。 つまり、E〜Eの事もあるし、E〜Hまでの事もある。
>それとも、EからJ の 「行」が可変となるという事でしょうか。
そのようになります

 
何がそのようになるのですか?
選択肢を二つ表示してそのように 言われても判りません。
 
  
引用:
2行目に日付が入力されてまして行は一定で
y軸値が B2〜
x軸値が B53〜

 
質問者さんは理解しているかもしれませんが、
回答者は省略された部分を読み解く部分からしなければならなくなります。
 
再現性のある提示の仕方をしてください。
 
なので もなこ2さんが
引用:
データの並びのイメージの提示があると、理解できるかもしれません・・・

と仰っているのは、そのためです。
 
 
例えば
	A	B	C	D	E	F	G	H	I	J
1	
2		2/1	2/2	2/3	2/4	2/5	2/6	2/7	2/8	3/1
3
:
53		1	3	5	7	10	13	10	4	8

 
こんなのがあって、(年は2018年ですが省略しています)
 
テキストボックスに 2018/02/07 を入力したとき
 
  「B2:I2」を取得したいのです。
 
とか。

投稿日時: 18/02/08 09:08:03
投稿者: こまじろう

おはよう御座います
 
皆様  色々有難う御座います
私の意図する所が上手に説明できず申し訳御座いません
 
 
端的にきちんと説明できれば と言う気持ちで反省ばかりです
大変申し訳なく感じております
 
Suzu様のご意見私の代弁みたいで恥ずかしいです
Suzu様の仰られている事行いたいのです
 
大変申し訳御座いませんが宜しくお願いいたします

回答
投稿日時: 18/02/08 10:02:02
投稿者: もこな2

そうなると、はじめの、

引用:
B列に日付(シリアル値)が入力されています
って何だったんだろう・・・
 
Suzuさんの推測を踏まえて考えると、こんな感じのなかから、たとえば2月の行を抽出したいとかかなともおもったんですが・・
 
        A       B    ・・           E        F      ....
1             日付             項目1  項目2
2               2/1               99      99
3               2/2               99      99
4               3/1               99      99
5               4/1               99      99

投稿日時: 18/02/08 10:40:08
投稿者: こまじろう

もなこ2様
 
私の記入間違いです
申し訳御座いません

投稿日時: 18/02/15 17:53:07
投稿者: こまじろう

DateSerial 使えば簡単なんですね