Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4922 / 13644 ツリー ←次へ | 前へ→

【53532】該当する数字の真下に×と表示したい YUKI 08/1/20(日) 18:44 質問[未読]
【53533】Re:該当する数字の真下に×と表示したい じゅんじゅん 08/1/20(日) 20:00 発言[未読]
【53534】Re:該当する数字の真下に×と表示したい YUKI 08/1/20(日) 20:52 発言[未読]
【53535】Re:該当する数字の真下に×と表示したい じゅんじゅん 08/1/20(日) 21:27 発言[未読]
【53536】Re:該当する数字の真下に×と表示したい YUKI 08/1/20(日) 22:34 お礼[未読]
【53537】Re:該当する数字の真下に×と表示したい じゅんじゅん 08/1/20(日) 22:49 発言[未読]
【53541】Re:該当する数字の真下に×と表示したい りん 08/1/21(月) 0:06 発言[未読]
【53542】Re:該当する数字の真下に×と表示したい じゅんじゅん 08/1/21(月) 7:07 発言[未読]
【53554】Re:該当する数字の真下に×と表示したい YUKI 08/1/21(月) 20:07 お礼[未読]
【53555】Re:該当する数字の真下に×と表示したい YUKI 08/1/21(月) 20:19 質問[未読]
【53556】Re:該当する数字の真下に×と表示したい じゅんじゅん 08/1/21(月) 21:34 発言[未読]
【53559】Re:該当する数字の真下に×と表示したい YUKI 08/1/22(火) 19:02 お礼[未読]
【53568】Re:該当する数字の真下に×と表示したい YUKI 08/1/22(火) 22:10 質問[未読]
【53572】Re:該当する数字の真下に×と表示したい じゅんじゅん 08/1/23(水) 0:01 発言[未読]
【53589】Re:該当する数字の真下に×と表示したい YUKI 08/1/23(水) 20:31 発言[未読]

【53532】該当する数字の真下に×と表示したい
質問  YUKI  - 08/1/20(日) 18:44 -

引用なし
パスワード
   初めまして。
EXCWL2000を使用して、簡単なマクロ程度しかできない初心者です。
アドバイスの程、宜しくお願い致します。

sheet1のA1〜J1に数字が入力された場合、
sheet2にあらかじめ数字が入力されている真下に×と表示することはできますか?
(数字はA1〜J1、A3〜J3、A5〜J5に1〜10、11〜20、21〜30が入力されている)

例えば、
sheet1のA1に3と入力した場合、
sheet2の3に該当するのがC1なので、C2に×を表示。

同様に、
sheet1のA1に3と入力、A2に15と入力、A3に30と入力した場合、
sheet2の3に該当するC1の下のC2に×、15に該当するE5の下のE6に×、
30に該当するJ5の下のJ6に×を表示。

アドバイスの程、宜しくお願い致します。

【53533】Re:該当する数字の真下に×と表示したい
発言  じゅんじゅん  - 08/1/20(日) 20:00 -

引用なし
パスワード
   ▼YUKI さん:
>初めまして。
>EXCWL2000を使用して、簡単なマクロ程度しかできない初心者です。
>アドバイスの程、宜しくお願い致します。

>sheet1のA1〜J1に数字が入力された場合、

>例えば、
>sheet1のA1に3と入力した場合、

>同様に、
>sheet1のA1に3と入力、A2に15と入力、A3に30と入力した場合、

シート1の入力範囲は1行目なのですか?
A列なのですか?
それとも、双方?

【53534】Re:該当する数字の真下に×と表示したい
発言  YUKI  - 08/1/20(日) 20:52 -

引用なし
パスワード
   じゅんじゅんさんへ

こんばんわ。
宜しくお願いします。

>>sheet1のA1〜J1に数字が入力された場合、
>
>>例えば、
>>sheet1のA1に3と入力した場合、
>
>>同様に、
>>sheet1のA1に3と入力、A2に15と入力、A3に30と入力した場合、
>
>シート1の入力範囲は1行目なのですか?
>A列なのですか?
>それとも、双方?

A1〜J1まで最大10個の入力の可能性があります。
この方法が可能であれば、
応用として、
sheet1の入力をA1〜J1だけでなく、
A1〜J100又はA1〜A100までをしたいと思っています。

アドバイスの程、宜しくお願い致します。

【53535】Re:該当する数字の真下に×と表示したい
発言  じゅんじゅん  - 08/1/20(日) 21:27 -

引用なし
パスワード
   ▼YUKI さん:
>じゅんじゅんさんへ
>A1〜J1まで最大10個の入力の可能性があります。
>この方法が可能であれば、
>応用として、
>sheet1の入力をA1〜J1だけでなく、
>A1〜J100又はA1〜A100までをしたいと思っています。
>
>アドバイスの程、宜しくお願い致します。

>sheet2にあらかじめ数字が入力されている真下に×と表示することはできますか?
>(数字はA1〜J1、A3〜J3、A5〜J5に1〜10、11〜20、21〜30が入力されている)

上記のように決まった順序で値があるなら、シート1のセル値でセル番地に
直してあげればいいのでは?

A1・・・Cells(1,1) : Cells(行,列)
だから、

Sub try()
 Dim Atai As Integer
 Dim iRow As Long
 Dim iColumn As Long

 Atai = Sheets("Sheet1").Range("A1").Value
 iRow = (Int(Atai / 10) + 1) * 2
 iColumn = Atai Mod 10
 Sheets("Sheet2").Cells(iRow, iColumn).Value = "×"
End Sub
基本はこんな感じでも。

あとは変数Ataiにループ(For〜Next等)で順次代入してあげれば
出来ると思いますよ。
ただ、実行するタイミング(シート1に入力毎)によっては、
また変わってくるでしょう。

【53536】Re:該当する数字の真下に×と表示したい
お礼  YUKI  - 08/1/20(日) 22:34 -

引用なし
パスワード
   じゅじゅんさんへ

ご返答ありがとうございます。
思っていたものより大変高度なものになり、
かなり困惑しているというのが、本音です。

あまり理解が出来ていない状態ですが、
実際にsheet1のA1に3と入力したところ、
sheet2のC2に×が表示され、感激です!
どうもありがとうございました。

お恥ずかしいついでに、
その続きもお聞きしても良いでしょうか?
A1〜A100を入力範囲とした場合、

Sub try()
 Dim Atai As Integer
 Dim iRow As Long
 Dim iColumn As Long

 Atai = Sheets("Sheet1").Range("A1").Value
 iRow = (Int(Atai / 10) + 1) * 2
 iColumn = Atai Mod 10
 Sheets("Sheet2").Cells(iRow, iColumn).Value = "×"
 
Dim Atai2 As Integer
 Dim iRow2 As Long
 Dim iColumn2 As Long


Atai2 = Sheets("Sheet1").Range("A2").Value
 iRow2 = (Int(Atai2 / 10) + 1) * 2
 iColumn2 = Atai2 Mod 10
 Sheets("Sheet2").Cells(iRow2, iColumn2).Value = "×"
 
 End Sub

としたら、エラーが発生し、400とでました。
やっぱり、理解していないようです。

申し訳ないのですが、もう少し、アドバイスを頂けませんか。
宜しくお願い致します。


>A1・・・Cells(1,1) : Cells(行,列)
>だから、
>
>Sub try()
> Dim Atai As Integer
> Dim iRow As Long
> Dim iColumn As Long
>
> Atai = Sheets("Sheet1").Range("A1").Value
> iRow = (Int(Atai / 10) + 1) * 2
> iColumn = Atai Mod 10
> Sheets("Sheet2").Cells(iRow, iColumn).Value = "×"
>End Sub
>基本はこんな感じでも。
>
>あとは変数Ataiにループ(For〜Next等)で順次代入してあげれば
>出来ると思いますよ。
>ただ、実行するタイミング(シート1に入力毎)によっては、
>また変わってくるでしょう。

【53537】Re:該当する数字の真下に×と表示したい
発言  じゅんじゅん  - 08/1/20(日) 22:49 -

引用なし
パスワード
   >エラーが発生し、400とでました。
コード自体に問題は見られず、エラーがどの行で起こったのか?を
提示して頂かないと。。。
シート1のA1に3,A2に15と入れて実行したら、ちゃんとできましたけど。

>A1〜A100を入力範囲とした場合、
シート1の入力範囲が100個ありますが、シート2の範囲は

>sheet2にあらかじめ数字が入力されている真下に×と表示することはできますか?
>(数字はA1〜J1、A3〜J3、A5〜J5に1〜10、11〜20、21〜30が入力されている)
これだけなのですか?

【53541】Re:該当する数字の真下に×と表示したい
発言  りん E-MAIL  - 08/1/21(月) 0:06 -

引用なし
パスワード
   こんばんわ。

>>エラーが発生し、400とでました。
>コード自体に問題は見られず、エラーがどの行で起こったのか?を
>提示して頂かないと。。。
>シート1のA1に3,A2に15と入れて実行したら、ちゃんとできましたけど。

>>> iColumn = Atai Mod 10
このコードだと、
Ataiが10で割り切れる時は iColumn=0 になってエラーになると思うのですが。

なので、行列番号の計算は、

 iColumn = (Atai - 1) Mod 10 + 1
 irow = ((Atai - 1) \ 10 + 1) * 2

ではないかと。

【53542】Re:該当する数字の真下に×と表示したい
発言  じゅんじゅん  - 08/1/21(月) 7:07 -

引用なし
パスワード
   ▼りん さん:
>こんばんわ。
>
>>>エラーが発生し、400とでました。
>>コード自体に問題は見られず、エラーがどの行で起こったのか?を
>>提示して頂かないと。。。
>>シート1のA1に3,A2に15と入れて実行したら、ちゃんとできましたけど。
>
>>>> iColumn = Atai Mod 10
>このコードだと、
>Ataiが10で割り切れる時は iColumn=0 になってエラーになると思うのですが。
>
>なので、行列番号の計算は、
>
> iColumn = (Atai - 1) Mod 10 + 1
> irow = ((Atai - 1) \ 10 + 1) * 2
>
>ではないかと。

りんさん:
なるほど〜、そうですよね。
10の倍数でのテストしなかったためでした。
フォローありがとうございます。

【53554】Re:該当する数字の真下に×と表示したい
お礼  YUKI  - 08/1/21(月) 20:07 -

引用なし
パスワード
   りんさんへ

はじめまして。
返答遅くなりました。

10も問題なく、無限大に数字が入れることが出来ました。
現在、最大数1000までを考えていますので、
非常に助かりました。


▼りん さん:
>こんばんわ。
>
>>>エラーが発生し、400とでました。
>>コード自体に問題は見られず、エラーがどの行で起こったのか?を
>>提示して頂かないと。。。
>>シート1のA1に3,A2に15と入れて実行したら、ちゃんとできましたけど。
>
>>>> iColumn = Atai Mod 10
>このコードだと、
>Ataiが10で割り切れる時は iColumn=0 になってエラーになると思うのですが。
>
>なので、行列番号の計算は、
>
> iColumn = (Atai - 1) Mod 10 + 1
> irow = ((Atai - 1) \ 10 + 1) * 2
>
>ではないかと。

【53555】Re:該当する数字の真下に×と表示したい
質問  YUKI  - 08/1/21(月) 20:19 -

引用なし
パスワード
   すみません、
一緒に聞いておきたいことがあります。


1.
今回、sheet2のA1〜J1に1〜10、A3〜J3に11〜20としましたが、
A1〜T1に1〜20、又はA1〜CVに1〜100等変動して使いたい場合をご教授お願いできませんか?

Sub 実行()
 Dim Atai As Integer
 Dim iRow As Long
 Dim iColumn As Long

 Atai = Sheets("Sheet1").Range("A1")
 iRow = (Int(Atai / 1000) + 1) * 2
 iColumn = Atai Mod 1000
 Sheets("Sheet2").Cells(iRow, iColumn).Value = "×"

と考えてみたのですが、左に行き過ぎて×を見るのが大変でした。
又、もう一つ致命的な欠点があり、240(IV)までしか数字が使えません。

2.縦にB1〜B1000までに同様に×を表示する方法はありませんか?


先程のりんさんのアドバイスからはほぼ解決なのですが、
今後の実力向上の為に、
1.、2.をアドバイスをお願いできませんか?

宜しくお願い致します。 

【53556】Re:該当する数字の真下に×と表示したい
発言  じゅんじゅん  - 08/1/21(月) 21:34 -

引用なし
パスワード
   ▼YUKI さん:
>すみません、
>1.
>今回、sheet2のA1〜J1に1〜10、A3〜J3に11〜20としましたが、
>A1〜T1に1〜20、又はA1〜CVに1〜100等変動して使いたい場合をご教授お願いできませんか?

Sub try2()
 Dim Atai As Integer
 Dim Hani As Integer
 Dim iRow As Long
 Dim iColumn As Long

 Atai = Sheets("Sheet1").Range("A1").Value
 Hani = Sheets("Sheet2").Cells(1, Columns.Count).End(xlToLeft).Value
 iRow = ((Atai - 1) \ Hani + 1) * 2
 iColumn = (Atai - 1) Mod Hani + 1
 Sheets("Sheet2").Cells(iRow, iColumn).Value = "×"
End Sub
シート2の1行目の一番右の値を基準(変数:Hani)としてます。

>2.縦にB1〜B1000までに同様に×を表示する方法はありませんか?
同様にとは?何を基準として表示するのでしょうか?
行列を入替えるという意味ならば、iRow, iColumn を応用してみて下さい。

>先程のりんさんのアドバイスからはほぼ解決なのですが、
>今後の実力向上の為に、
>1.、2.をアドバイスをお願いできませんか?
>
>宜しくお願い致します。

【53559】Re:該当する数字の真下に×と表示したい
お礼  YUKI  - 08/1/22(火) 19:02 -

引用なし
パスワード
   じゅんじゅんさんへ

こんばんわ。

> Hani = Sheets("Sheet2").Cells(1, Columns.Count).End(xlToLeft).Value
ちょっと、難しいです。
というか、今の自分では高度すぎる業です。

アドバイスありがとうございました。
また質問をさせて頂くかもしれませんが、
その際には宜しくお願い致します。

▼じゅんじゅん さん:
>▼YUKI さん:
>>すみません、
>>1.
>>今回、sheet2のA1〜J1に1〜10、A3〜J3に11〜20としましたが、
>>A1〜T1に1〜20、又はA1〜CVに1〜100等変動して使いたい場合をご教授お願いできませんか?
>
>Sub try2()
> Dim Atai As Integer
> Dim Hani As Integer
> Dim iRow As Long
> Dim iColumn As Long
>
> Atai = Sheets("Sheet1").Range("A1").Value
> Hani = Sheets("Sheet2").Cells(1, Columns.Count).End(xlToLeft).Value
> iRow = ((Atai - 1) \ Hani + 1) * 2
> iColumn = (Atai - 1) Mod Hani + 1
> Sheets("Sheet2").Cells(iRow, iColumn).Value = "×"
>End Sub
>シート2の1行目の一番右の値を基準(変数:Hani)としてます。
>
>>2.縦にB1〜B1000までに同様に×を表示する方法はありませんか?
>同様にとは?何を基準として表示するのでしょうか?
>行列を入替えるという意味ならば、iRow, iColumn を応用してみて下さい。
>
>>先程のりんさんのアドバイスからはほぼ解決なのですが、
>>今後の実力向上の為に、
>>1.、2.をアドバイスをお願いできませんか?
>>
>>宜しくお願い致します。

【53568】Re:該当する数字の真下に×と表示したい
質問  YUKI  - 08/1/22(火) 22:10 -

引用なし
パスワード
   こんばんわ。

すみません、解決のつもりでいましたが、
一つ問題が発生してしまいました。

 Sub 実行()
 Dim Atai As Integer
 Dim iRow As Long
 Dim iColumn As Long

 Atai = Sheets("Sheet1").Range("A1").Value
 iColumn = (Atai - 1) Mod 10 + 1
 iRow = ((Atai - 1) \ 10 + 1) * 2
 Sheets("Sheet2").Cells(iRow, iColumn).Value = "×"

 Atai2 = Sheets("Sheet1").Range("A1").Value
 iColumn2 = (Atai2 - 1) Mod 10 + 1
 iRow2 = ((Atai2 - 1) \ 10 + 1) * 2
 Sheets("Sheet2").Cells(iRow2, iColumn2).Value = "×"


当初は、数値の入力が10件のつもりでしたので、
10までつくりました。
しかし、入力が1件の場合もあり、
数値を件数分(今だと10件)、
全て入力をしないとエラーになってしまうと言う事にきがつきました。
解決する方法はありませんか?

又、同じ数字を2度入力した場合、
同様にエラーがでました。
×2と表示する事は出来ませんか?
(3度入力したら、×3)

やっぱり難しいです。。

▼YUKI さん:
>りんさんへ
>
>はじめまして。
>返答遅くなりました。
>
>10も問題なく、無限大に数字が入れることが出来ました。
>現在、最大数1000までを考えていますので、
>非常に助かりました。
>
>
>▼りん さん:
>>
>> iColumn = (Atai - 1) Mod 10 + 1
>> irow = ((Atai - 1) \ 10 + 1) * 2
>>
>>ではないかと。

【53572】Re:該当する数字の真下に×と表示したい
発言  じゅんじゅん  - 08/1/23(水) 0:01 -

引用なし
パスワード
   ▼YUKI さん:
>こんばんわ。
>
>すみません、解決のつもりでいましたが、
>一つ問題が発生してしまいました。

>当初は、数値の入力が10件のつもりでしたので、
>10までつくりました。
>しかし、入力が1件の場合もあり、
>数値を件数分(今だと10件)、
>全て入力をしないとエラーになってしまうと言う事にきがつきました。
>解決する方法はありませんか?
>
>又、同じ数字を2度入力した場合、
>同様にエラーがでました。
>×2と表示する事は出来ませんか?
>(3度入力したら、×3)
>
>やっぱり難しいです。。

最初に提示された
>sheet2にあらかじめ数字が入力されている真下に×と表示することはできますか?
>(数字はA1〜J1、A3〜J3、A5〜J5に1〜10、11〜20、21〜30が入力されている)
この条件(範囲が10であれ任意であれ)は、実際のデータと合致してますか?

例えば1〜10とあっても、実は偶数のみ・奇数のみ・ランダムに飛んでいる
なんて事はないですか?
そう言った場合の問題であるなら、正確にデータ(表)の情報を提示されないと
回答も困難になると思いますよ。

【53589】Re:該当する数字の真下に×と表示したい
発言  YUKI  - 08/1/23(水) 20:31 -

引用なし
パスワード
   じゅんじゅんさんへ

こんばんわ。
いつもご返答ありがとうございます。

じゅんじゅんさんが仰られるように、
もう一度、全てを見直し、確認作業をしてみます。

期日があり、少し焦っていたのかもしれません。
申し訳ございませんでした。

▼じゅんじゅん さん:
>▼YUKI さん:
>>こんばんわ。
>>
>>すみません、解決のつもりでいましたが、
>>一つ問題が発生してしまいました。
>
>>当初は、数値の入力が10件のつもりでしたので、
>>10までつくりました。
>>しかし、入力が1件の場合もあり、
>>数値を件数分(今だと10件)、
>>全て入力をしないとエラーになってしまうと言う事にきがつきました。
>>解決する方法はありませんか?
>>
>>又、同じ数字を2度入力した場合、
>>同様にエラーがでました。
>>×2と表示する事は出来ませんか?
>>(3度入力したら、×3)
>>
>>やっぱり難しいです。。
>
>最初に提示された
>>sheet2にあらかじめ数字が入力されている真下に×と表示することはできますか?
>>(数字はA1〜J1、A3〜J3、A5〜J5に1〜10、11〜20、21〜30が入力されている)
>この条件(範囲が10であれ任意であれ)は、実際のデータと合致してますか?
>
>例えば1〜10とあっても、実は偶数のみ・奇数のみ・ランダムに飛んでいる
>なんて事はないですか?
>そう言った場合の問題であるなら、正確にデータ(表)の情報を提示されないと
>回答も困難になると思いますよ。

4922 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free