Excel VBA質問箱 IV

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

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


100 / 3841 ページ ←次へ | 前へ→

【80469】Re:行のデータをクリアして1行づつ繰り上...
発言  ノンボ  - 19/2/17(日) 9:47 -

引用なし
パスワード
   ▼γ さん:
>それでは、あなたのコードをステップ実行してみてください。
>F8キーを押しながら1行ずつ実行するものです。
>どこで想定と違うことが起きているのか、
>原因を調べてみて下さい。
># こうした作業をデバッグといいますが、
># コード作成と一体になるものです。

γさん返信ありがとうございます。
言われたようにコードを実行してみましたら、end ifの前のRows(i)=""でフォーマットで不具合が生じました。Next iまですべて実行するとフォーマットのセルが解除されて、データが消えてしまいます。どのように編集すればよろしいでしょうか。
・ツリー全体表示

【80468】Re:行のデータをクリアして1行づつ繰り上...
発言  γ  - 19/2/17(日) 8:47 -

引用なし
パスワード
   それでは、あなたのコードをステップ実行してみてください。
F8キーを押しながら1行ずつ実行するものです。
どこで想定と違うことが起きているのか、
原因を調べてみて下さい。
# こうした作業をデバッグといいますが、
# コード作成と一体になるものです。
・ツリー全体表示

【80467】Re:行のデータをクリアして1行づつ繰り上...
発言  ノンボ  - 19/2/17(日) 8:18 -

引用なし
パスワード
   ▼γ さん:
>合計金額というのはどの列にあるんですか?
>
>> 入金金額により差額が0かそうでないかを判断し、
>> 2行目から10行目までのフォーマットを崩さずに、
>> 0の場合は、行を1行ずつ繰り上げていきます。
>> 0でない場合はデータをそのままにしたく、
>ここの操作を箇条書きにして提示してください。
>特に、
>行を1行ずつ繰り上げる
>というところを手作業でやるとして、
>正確に箇条書きしてください。
>
>あなたのコードは間違っている、
>というか、想定していることと違う結果になるわけだから、
>そのコードは参考にできないのです。
>間違っているもので説明したことにするのは余りに大胆です。

説明がうまくなく申し訳ありません。
本体金額はB〜F列、税額はG〜J列、合計金額がK〜P列、入金金額はQ〜T列
差額はU〜W列、それぞれセルが結合されています。
月ごとに売上金額があります。毎月入金金額が2〜5行目の入金金額欄(Q〜T)列に入力されます。入金金額が合計金額と一致したら差額は0になりますが、合計金額と一致しない場合差額が生じます。差額が0か0でないか判断して、0のばあいはその行をクリアさせて、下の行を1行づつ繰り上げてコピーしたいのです。0ない場合はクリアさせないでそのままにしたいです。行を1行ずつ繰り上げるのを手作業でおこないますと1行ずつコピーして貼り付けます。それを自動化させたいのです。
下記フォーマットの表をあらためて表示します。

A列   B〜F列 G〜J列 K〜P列  Q〜T列  U〜W列                     
月    本体金額  税額  合計金額  入金金額  差額
3月    60000    4800  64800    64800    0
4月    50000    4000  54000    54000    0
5月    30000    2400  32400    32400    0
6月    50000    4000  54000    54000    0
7月    35000    2800  37800    37800    0
8月    30000    2400  32400      0   32400
9月    25000    2000  27000
10月    50000    4000  54000
11月    40000    3200  43200

よろしくお願いします。
・ツリー全体表示

【80466】Re:検索フォームの動作について
発言  tarutaru  - 19/2/17(日) 7:42 -

引用なし
パスワード
   マナ様

はい。始めは「決定」ボタン1つで行おうと思い、「抽出」ボタンは作成していませんでした。
ところが、最初に投稿した質問欄にあるように、その構文ではListBox1に抽出されたListのどれかを一度選択しなければ、Sheet3にそのデータが反映されません。
マナ様のおっしゃるとおり、できれば簡潔にできるようにしたいのですが何分知識不足で…。
もし、よろしければ、フィルタオプションを含めた具体的なステートメントをご教示いただけますと幸いです。

他の方の質問対応でお忙しい中、お時間のある時で構いませんので、大変申し訳ありませんが、ご教示よろしくお願いいたします。
・ツリー全体表示

【80465】Re:EXCEL2010 VBA オートフィルタ
発言  りょうた  - 19/2/17(日) 4:56 -

引用なし
パスワード
   マナ様

ありがとうございます

1つ目と2つ目の条件で、抽出したいです
2回のオートフィルタの結果を一度で表示したいです
・ツリー全体表示

【80464】Re:検索フォームの動作について
発言  マナ  - 19/2/17(日) 0:03 -

引用なし
パスワード
   ▼tarutaru さん:

ListBox1の全データを転記する場合の別案です。

リストボックスには、全項目取り込んでおいて、
不要な項目は、非表示にしておけば、
Sheet3には、リストボックスからの単純な転記ですみそうです。

あるいは、フィルタオプションで転記というのも簡単そうです。
・ツリー全体表示

【80463】Re:検索フォームの動作について
発言  マナ  - 19/2/16(土) 23:22 -

引用なし
パスワード
   ▼tarutaru さん:

>そのListBox1に表示された該当データ(List)をシングルクリックし、「抽出」ボタンを押すと、Sheet3にListBox1に表示されたデータと同じデータが表示されるようにしているのですが、Sheet3にはB2「役職」で絞り込まれたデータ全てが表示されてしまいます。

シングルクリックは、何のためにしているのですか?

選択したデータでなく、ListBox1の全データを転記するのであれば、
そもそも抽出ボタンでなく、決定ボタンで、
Sheet3にも同時に貼り付けではだめなのでしょうか?
・ツリー全体表示

【80462】Re:EXCEL2010 VBA オートフィルタ
発言  マナ  - 19/2/16(土) 23:17 -

引用なし
パスワード
   ▼りょうた さん:

>C列ですが、年月日の大きいものと小さいものの2種類があります
>例えば、20190215と20190217 がありましたら
>1つ目のオートフィルタのC列の年月日は20190217になります
>(大きいものだけを選択)
>
>2つ目のオートフィルタのC列の年月日は20190217と20190215になります
>(大きいものと小さいものを選択)

そこまでは理解しています。
2回のオートフィルタの結果を一度で表示したいのですよね。

1つ目または2つ目の条件で抽出ということでしょうか。
そうであれば、オートフィルタではなく
フィルタオプションを使うとよいです。


  
・ツリー全体表示

【80460】Re:EXCEL2010 VBA オートフィルタ
発言  りょうた  - 19/2/16(土) 22:42 -

引用なし
パスワード
   マナ様

失礼しました

ありがとうございます

オートフィルタを2度行います

1つ目はC列の年月日が大きくて、AQ列のABCを選択してデータを表示

2つ目はC列の年月日とAQ列のAEWQを選択してデータを表示

したいと思っています

C列ですが、年月日の大きいものと小さいものの2種類があります
例えば、20190215と20190217 がありましたら
1つ目のオートフィルタのC列の年月日は20190217になります
(大きいものだけを選択)

2つ目のオートフィルタのC列の年月日は20190217と20190215になります
(大きいものと小さいものを選択)
・ツリー全体表示

【80459】Re:行のデータをクリアして1行づつ繰り上...
発言  γ  - 19/2/16(土) 22:23 -

引用なし
パスワード
   合計金額というのはどの列にあるんですか?

> 入金金額により差額が0かそうでないかを判断し、
> 2行目から10行目までのフォーマットを崩さずに、
> 0の場合は、行を1行ずつ繰り上げていきます。
> 0でない場合はデータをそのままにしたく、
ここの操作を箇条書きにして提示してください。
特に、
行を1行ずつ繰り上げる
というところを手作業でやるとして、
正確に箇条書きしてください。

あなたのコードは間違っている、
というか、想定していることと違う結果になるわけだから、
そのコードは参考にできないのです。
間違っているもので説明したことにするのは余りに大胆です。
・ツリー全体表示

【80458】Re:EXCEL2010 VBA オートフィルタ
発言  マナ  - 19/2/16(土) 22:13 -

引用なし
パスワード
   ▼りょうた さん:


>※1と※2のデータをシートに一度で表示するには
>どのようにしたらよいでしょうか?

最終的に表示したい条件を日本語で説明できますか
・ツリー全体表示

【80457】EXCEL2010 VBA オートフィルタ
質問  りょうた  - 19/2/16(土) 21:51 -

引用なし
パスワード
   Sub macro1()

Dim MaxDay As Long
Dim MinDay As Long

Dim LastRow As Long
LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
MaxDay = WorksheetFunction.Max(Range("C:C"))
MinDay = WorksheetFunction.Min(Range("C:C"))

With ActiveSheet.Range("$A$1:$AW" & LastRow)

'※1
.AutoFilter Field:=3, Criteria1:=MaxDay
.AutoFilter Field:=43, Criteria1:="ABC"

'※2
.AutoFilter Field:=3
.AutoFilter Field:=43, Criteria1:="AEWQ"


End With

End Sub

AからAWまでのデータがあります

C列に、年月日(YYYYMMDD形式)の文字があります
AQ列に、商品名があります

オートフィルタを2度実行して、シートに2度実行した結果を
表示したく思います

上記のコードで、オートフィルタを2度実施して、
シートに結果を表示しようとしているのですが
※1、※2共にデータがあるにも関わらず※2だけ表示されます

※1だけのコードなら、※1のデータが表示され、
※2だけのコードなら、※2のデータが表示されます

※1と※2のデータをシートに一度で表示するには
どのようにしたらよいでしょうか?

ご教示ください
・ツリー全体表示

【80456】Re:検索フォームの動作について
発言  tarutaru  - 19/2/16(土) 21:38 -

引用なし
パスワード
   マナ様 

早速の対応ありがとうございます。

はい、各ボックスに入力を行い(もちろんその内の1つでもいいのですが)、「決定」ボタンを押すと、ListBox1に該当データが抽出されます。※各ボックスに入力すればするほど抽出の精度が上がります。
そのListBox1に表示された該当データ(List)をシングルクリックし、「抽出」ボタンを押すと、Sheet3にListBox1に表示されたデータと同じデータが表示されるようにしているのですが、Sheet3にはB2「役職」で絞り込まれたデータ全てが表示されてしまいます。そこで、以下の問題を解決していただけないでしょうか?

1.ListBox1に抽出されたデータ(List)と同じ結果をSheet3に反映したい。
2.かつ、「抽出」ボタンを押さずとも、ListBox1に抽出されているデータ(List)をダブルクリックすると、Sheet3に1.と同じ結果と、ダブルクリックしたデータ(List)がピックアップ(Cellの色が変わる)するようにしたいと思っています。
現状、ダブルクリックのステートメントに、エラーが発生し、解決できずにいます。

よろしくお願いいたします。
・ツリー全体表示

【80455】Re:行のデータをクリアして1行づつ繰り上...
質問  ノンボ  - 19/2/16(土) 21:27 -

引用なし
パスワード
   1行目 本体金額  税額 合計金額 入金金額 差額
2行目  60,000  4,800 64,800  64,800   0
3行目  50,000  4,000 54,000
4行目  30,000  2,400 32,400  
5行目  50,000  4,000 54,000
6行目  35,000  2,800 37,800
7行目  30,000  2,400 32,400
8行目  25,000  2,000 27,000
9行目    0
10行目    0

タイトル行の列それぞれ結合されています。本体金額(B〜F),税額(G〜J),入金金額(K〜P),差額(U〜W). 税額、入金金額、差額には数式が入っています。
入金金額により差額が0かそうでないかを判断し、2行目から10行目までのフォーマットを崩さずに、0の場合は、行を1行ずつ繰り上げていきます。0でない場合はデータをそのままにしたく、下記コード書きました。
Sub Test5()
  Dim i As Integer, j As Integer
  j = 1
  For i = 2 To 10
  If (Range("U" & i).Rows) = 0 Then
    Rows(i).ClearContents
  End If
  If (Range("B" & i).Rows <> "") Then
    j = j + 1
    Rows(i).Copy Rows(j)
    Rows(i) = ""
  End If
  Next i
End Sub

 0の場合はうまくいきますが、差額が0でない場合は、セルの結合が解除されデータが全て消えてしまいます。セルの数式も残したいのですが、可能でしょうか。
いろいろ調べたり、試したりしましたがうまくいきません。
どのように編集すればよいかご教授ください。
・ツリー全体表示

【80454】Re:行のデータをクリアして1行づつ繰り上...
発言  マナ  - 19/2/16(土) 21:02 -

引用なし
パスワード
   ▼ノンボ さん:
>なぜ説明がりかいできないのか解りません?

そうですか。ここまでにします。
お役に立てなくて、ごめんなさい。


   
・ツリー全体表示

【80453】Re:行のデータをクリアして1行づつ繰り上...
発言  ノンボ  - 19/2/16(土) 20:26 -

引用なし
パスワード
   なぜ説明がりかいできないのか解りません?
・ツリー全体表示

【80452】Re:行のデータをクリアして1行づつ繰り上...
発言  マナ  - 19/2/16(土) 20:23 -

引用なし
パスワード
   ▼ノンボ さん:

>サンプルのコードです。

申し訳ありません。これを最後にさせてください。

手作業でなら、どういう手順になるかを
箇条書きで説明お願いしています。
「かわりにコードを提示しているでしょう」というのは勘弁してください。
日本語に翻訳してください。

また、実行前と実行後の結果の例を提示してください。
これについてもお願いします。

'----

さっさと回答してよとお思いなら遠慮なくいってください。
他にも回答者はいますので安心してよいです。
・ツリー全体表示

【80451】Re:行のデータをクリアして1行づつ繰り上...
発言  ノンボ  - 19/2/16(土) 19:50 -

引用なし
パスワード
   1行目 本体金額  税額 合計金額 入金金額 差額
2行目  60,000  4,800 64,800  64,800   0
3行目  50,000  4,000 54,000
4行目  30,000  2,400 32,400  
5行目  50,000  4,000 54,000
6行目  35,000  2,800 37,800
7行目  30,000  2,400 32,400
8行目  25,000  2,000 27,000
9行目    0
10行目    0

入金金額が0の場合、2行目をくりあさせて、下の行を1行づつ繰り上げたいのです。入金金額がない場合があります。差額が0ではなくなります。そのときはfor
nextから抜けたいのですが?よろしくお願いします。
・ツリー全体表示

【80450】Re:行のデータをクリアして1行づつ繰り上...
発言  ノンボ  - 19/2/16(土) 19:43 -

引用なし
パスワード
   Sub Test5()
  Dim i As Integer, j As Integer
  j = 1
  For i = 2 To 10
  If (Range("U" & i).Rows) = 0 Then
    Rows(i).ClearContents
  End If
  If (Range("B" & i).Rows <> "") Then
    j = j + 1
    Rows(i).Copy Rows(j)
    Rows(i) = ""
  End If
  Next i
End Sub
サンプルのコードです。
・ツリー全体表示

【80449】Re:検索フォームの動作について
発言  マナ  - 19/2/16(土) 19:35 -

引用なし
パスワード
   ▼tarutaru さん:

やっと検索フォームが準備できました。

決定、抽出、RESETボタンの役割を
すでに説明いただいたいると思いますが、
もう一度教えてください。
で、期待通りにならない場合は、どうなるかも。
・ツリー全体表示

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