Excel VBA質問箱 IV

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

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


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

【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ボタンの役割を
すでに説明いただいたいると思いますが、
もう一度教えてください。
で、期待通りにならない場合は、どうなるかも。
・ツリー全体表示

【80448】Re:検索フォームの動作について
回答  tarutaru  - 19/2/16(土) 17:20 -

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

説明不足で申し訳ありません。
内訳は下記のとおりとなります。

ComboBox1(役職) = “部 長”,”課 長”,”係 長”,”社 員”
ComboBox3(所属) = “営 業”,”内 勤”,”配 送”
TextBox1(氏名)
ComboBox4(血液型) = “A”,”B”,”O”,”AB”,
ComboBox2(配偶者) = “有”,無”
ComboBox7(所業構成) =”文字列1”,”文字列2”,”文字列3”,”文字列4”
ComboBox8(就業形態) =”文字列1”,”文字列2”,”文字列3”,”文字列4”
TextBox2入社年月日 2000/1/1
TextBox3退社年月日 2001/1/1
TextBox5年齢(数字)※入力しても反映されていません。
TextBox6該当数(数字)
TextBox7総 数(数字)
CommandButton1(決定ボタン)
CommandButton2(抽出ボタン)
CommandButton3(RESETボタン)
ListBox1

・TextBox:6個
・ListBox:1個
・ComboBox:6個
・CommandButton:3個


Sheet(“2019.4”)の項目は、
A列は3行目から連番
(B2)役職
(C2)所属
(D2)“数字”
(E2)氏名
(F2)住所
(G2)生年月日
(H2)年齢
(I2)血液型
(J2)入社年月日
(K2)退社年月日
(L2)在職月(総数)
(M2)在職年月
(N2)連絡先1
(O2)連絡先2
(P2)職業構成
(Q2)就業形態
(R2)会社名
(S2)会社連絡先
(T2)配偶者(有無)

※Sheet(“2019.4”)上の1行目に、「入力」「検索」の2つのボタンを配置しており、それぞれのフォームが開くようにしています。Sheet3にも1行目に「一覧表」の
ボタンを配置しており、Sheet(“2019.4”)が表示されるようにしてあります。

お手数を掛けますが、よろしくお願いいたします。
・ツリー全体表示

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

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

>VBA実行後期待する結果は、差額が0の場合0の行をクリアさせて、下のデータを1行づつ繰り上げたいのです。差額が0でない場合は、そのままのにしたいです。

文章ではなく、サンプルデータを表形式で提示できませんか。
・ツリー全体表示

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

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

箇条書きで説明できますか。
わたしの場合、それが、マクロ作成で最初にすることです。
・ツリー全体表示

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

引用なし
パスワード
   マナさん返信ありがとうございます。

手作業ですと、差額が0か0でないかを判断しまして、0の場合はその行をクリアさせ下の行のデータを貼り付けていきます。0でない場合はそのままでなにもしません。
VBA実行後期待する結果は、差額が0の場合0の行をクリアさせて、下のデータを1行づつ繰り上げたいのです。差額が0でない場合は、そのままのにしたいです。
 よろしくお願いします。
・ツリー全体表示

【80444】Re:分類が変わる毎に規則正しく空白行を...
発言  riki7 E-MAIL  - 19/2/16(土) 11:07 -

引用なし
パスワード
   ありがとうございます
恥ずかしながら
値が変わると空白行足すしか
マクロわからないので
これだけでは解決せず
まずは調べてみます。
・ツリー全体表示

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

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

>またマクロ実行前だけでなく
>実行後も提示お願いします。

文章がおかしかったです。
実行後の期待する結果も提示お願いします。
・ツリー全体表示

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