Excel VBA質問箱 IV

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

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


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

【80408】Re:複数条件で一致を見つけ、特定の条件...
発言  マナ  - 19/2/11(月) 17:34 -

引用なし
パスワード
   ▼もち吉 さん:

わたしなら「小計」機能を利用するというだけで、
他にも方法はあると思います。
他の方からの回答をお待ち下さい。
・ツリー全体表示

【80407】Re:複数条件で一致を見つけ、特定の条件...
発言  もち吉  - 19/2/11(月) 17:20 -

引用なし
パスワード
   実はその後にも作業がありまして…
フォーマットの読みかえなので、コピーペーストする場所も異なっております。(行は同じですが、セルが異なります)
最終的にバイト数での読み返で、そのセルがなんバイト以下なら、何バイトにし、何バイト以上なら何バイトに読み換える…などと複雑な作業が待っているのですが
とはいえ、今は並び替えができないことには始まらないため、
ご質問させていただきました。
合計を出す事が目的ではなく、端末に読み込んでもらう形式でデータを流し込むための作業です。

データベース会社から還元されてくるのでおおよそ、ソートはされてるのですが、
おおよそ3000行ほどデータがあるのですが、
手動で行うイメージがついておりません。
並び替えだけではなく、共通項は1行にまとめ(ヘッダーのようなイメージ)、非共通項を並び替えるというところに難しさを感じています。

どのように行うのかご教示いただけますでしょうか。
・ツリー全体表示

【80406】Re:複数条件で一致を見つけ、特定の条件...
発言  マナ  - 19/2/11(月) 17:04 -

引用なし
パスワード
   ▼もち吉 さん:

ということは、条件リストのようなものはなく
今あるデータをすべて、並べ替えるという作業ですね。

「並べ替え」と「小計」機能を使って、
各条件ごとの合計を出して、
あとはコピーペーストの繰り返し

が簡単そうです。
どんな操作になるかイメージできますか。

まずは手動で試してみるとよいです。

 
・ツリー全体表示

【80405】Re:複数条件で一致を見つけ、特定の条件...
発言  もち吉  - 19/2/11(月) 16:48 -

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

抽出条件は、日付、企業名、IDのみです。
純粋に並び替えが目的でして、次の抽出結果は
13行目に続けたいです。

最近始まった作業でして、暫定的に
今現在は
1.まず条件にあてはまるものだけをフィルターで抜き出します
(会社名でソートをかけ、日付、IDでさらに条件を整理します)
2.別シートの1行目に共通項目貼り付け
3.2行目以降に、非共通項目をコピーして並べ・・・・
4.件数合計をだし
5.1.の作業を繰り返す…

です。

ご質問の回答となっておりますでしょうか?

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

【80404】Re:複数条件で一致を見つけ、特定の条件...
発言  マナ  - 19/2/11(月) 16:38 -

引用なし
パスワード
   ▼もち吉 さん:

>1.日付、企業名、IDが一致しているデータを抜き出す

>を、ループで繰り返したいです。

抽出条件はリスト化されているのでしょうか。
次の抽出結果は、13行目に続けるのでしょうか。

>マクロ化しなければとてもじゃないけれどミスが起きてしまいそうな

現在は、手作業でしているのでしょうか。
その手順を具体的に説明してください。
・ツリー全体表示

【80403】複数条件で一致を見つけ、特定の条件で並...
質問  もち吉  - 19/2/11(月) 16:18 -

引用なし
パスワード
   はじめまして、VBA初心者ですが、
マクロ化しなければとてもじゃないけれどミスが起きてしまいそうな
データ加工業務があり、お力添えいただければと思います。


列項目で
日付・企業名・ID・振込元・振込先・振込金額・・・・15列ほど


と並んでいるデータがあるのですが

1.日付、企業名、IDが一致しているデータを抜き出す
2.抜き出したデータが10個あったとする
3.10個のデータの共通データ(日付、企業名、ID、振込元)は1行目に記載し
異なる部分(振込先、振込金額)を2行目から10個繰り返し
4.その件数の合計を12行目に掃き出す

を、ループで繰り返したいです。


※最終的には、固定長読み込みのシステムに流し込むのですが
改行を無視してくれる仕組みになっているので
はきだした先の1行目と2行目の列項目が相違していて問題ないです。

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

【80402】Re:分類表示を並び替えたい
お礼  riki7  - 19/2/10(日) 17:12 -

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

I am grateful for your support
CurrentRegion
の勉強にもなりました、。
嬉しい!
今後もよろしくお願いいたします
・ツリー全体表示

【80401】Re:ワークシートをコピーし空白行を削除...
発言  マナ  - 19/2/10(日) 9:41 -

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

>時間を短くする処理の仕方を改めて考えようと思います。

オートフィルタを使うと良い気がします。
まずは手作業で期待通り削除できることを確認してはどうでしょうか。
・ツリー全体表示

【80400】Re:分類表示を並び替えたい
発言  マナ  - 19/2/10(日) 9:37 -

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

Option Explicit

Sub test()
  Dim v(1 To 5) As String '1)大大分類,大分類,中分類,小分類,品物
  Dim c As Range
  Dim n As Long
  
  Range("E1").currentredion.ClearContents
  
  For Each c In Range("B1", Range("B1").End(xlDown)) '2)
  
    If c.Offset(, -1).Value <> "" Then       '3)
      v(c.Offset(, -1)) = c.Value
      
    Else                      '4)
      v(5) = c.Value
      n = n + 1
      Range("E" & n).Resize(, 5).Value = v
    End If
    
  Next                        '5)
  
End Sub


  
・ツリー全体表示

【80399】Re:ワークシートをコピーし空白行を削除...
お礼  nonchan E-MAIL  - 19/2/10(日) 9:20 -

引用なし
パスワード
   マナさん
お返事ありがとうございます。
再度実行してみたのですが、うまくいきました!
面倒おかけして、すみませんでした。
行を削除するマクロが、異様に時間がかかってしまっていた
せいか、ものすごく時間がかかって止まったように見えて
しまっていただけでした。
時間を短くする処理の仕方を改めて考えようと思います。

本当に申し訳ありませんでした。
ありがとうございました。
助かりました!


▼マナ さん:
>▼nonchan さん:
>
>>テンプレートには合計600行あって、そのテンプレートには
>>vlookup関数が仕込んであり、他のデータベースから引っ張って
>>きたデータを検索するようになっています。
>
>理解しました。
>
>>失敗しました!!
>
>コードを見た感じでは、問題ないように思えますが。
>失敗とは、削除されないということでしょうか。
>
>ステップ実行とか試してみましたか。
・ツリー全体表示

【80398】Re:分類表示を並び替えたい
発言  riki7  - 19/2/10(日) 9:09 -

引用なし
パスワード
   マナ さん:ありがとうございます。
初心者の理解不足にて
マクロ化のイメージがおぼつかなく
もう少し解決への考えを詳しく教えてくださいませんか?
例えば以下を進めていくとそれぞれどういうデータになっていくのでしょうか?
特に3)以下の部分が
>1)分類名と品物名を覚えておくための配列を用意
>  配列(大大分類,大分類,中分類,小分類,品物)
どこに用意すると良いですか?
>2)元データのB列をB1セルから順番に調べる
>3)左隣(A列)が空欄でなかったら、配列の分類名を更新
>4)空欄ならば
>  4−1)配列の品物名を更新
>  4−2)配列(分類名と品物名)を並べ替え先に貼り付ける
>5)元データのB列最終セルまで繰り返し
・ツリー全体表示

【80397】Re:カレンダーに予定を自動入力したい
発言  マナ  - 19/2/10(日) 9:04 -

引用なし
パスワード
   ▼VBA初心者 さん:

>原因として考えられるのは、検索した結果(rngFound)がdと一つも当てはまらなかった場合の処理が入っていないということかなと思うのですが、その場合どうすればいいでしょうか?
>
>自分としてはIf Not rngFound Is Nothing Thenを使えばいいと思い、何度か組んでみたのですがすべてエラーになってしまうので、教えていただきたいです。

最初の検索の直後に挿入するのでは?
どのように試したのか提示してください。
・ツリー全体表示

【80396】Re:分類表示を並び替えたい
発言  マナ  - 19/2/10(日) 8:48 -

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

こんな感じで考えてはどうでしょうか

1)分類名と品物名を覚えておくための配列を用意
  配列(大大分類,大分類,中分類,小分類,品物)
2)元データのB列をB1セルから順番に調べる
3)左隣(A列)が空欄でなかったら、配列の分類名を更新
4)空欄ならば
  4−1)配列の品物名を更新
  4−2)配列(分類名と品物名)を並べ替え先に貼り付ける
5)元データのB列最終セルまで繰り返し
・ツリー全体表示

【80395】Re:分類表示を並び替えたい
発言  riki7  - 19/2/10(日) 8:29 -

引用なし
パスワード
   質問ありがとうございます
説明不足ですみません
品物名も分類名と同じB列です
▼マナ さん:
>▼riki7 さん:
>>/は列区切りです。
>>以下の並びで表があるとします。
>>1/大大分類名1
>>2/大分類名1
>>3/中分類名1
>>4/小分類名1
>>品物名X
>>品物名Y
>
>品物名Xとか品物名Yは、A列でしょうか?
>
>     -A-     -B-
>1    1    大大分類名1
>2    2    大分類名1
>3    3    中分類名1
>4    4    小分類名1
>5    品物名X    
>6    品物名Y
・ツリー全体表示

【80394】Re:分類表示を並び替えたい
発言  マナ  - 19/2/9(土) 19:48 -

引用なし
パスワード
   ▼riki7 さん:
>/は列区切りです。
>以下の並びで表があるとします。
>1/大大分類名1
>2/大分類名1
>3/中分類名1
>4/小分類名1
>品物名X
>品物名Y

品物名Xとか品物名Yは、A列でしょうか?

    -A-     -B-
1    1    大大分類名1
2    2    大分類名1
3    3    中分類名1
4    4    小分類名1
5    品物名X    
6    品物名Y
・ツリー全体表示

【80393】分類表示を並び替えたい
質問  riki7  - 19/2/9(土) 19:14 -

引用なし
パスワード
   /は列区切りです。
以下の並びで表があるとします。
1/大大分類名1
2/大分類名1
3/中分類名1
4/小分類名1
品物名X
品物名Y
4/小分類名2
品物名Y
4/小分類名3
品物名X
品物名Z
3/中分類名2
4/小分類名1
品物名X
品物名Y
2/大分類名2
3/中分類名2
4/小分類名1
品物名X
品物名Y
この並びを下記の一覧に変換させるマクロを作るにはどうしたら良いでしょうか
大大分類名1/大分類名1/中分類名1/小分類名1/品物名X
大大分類名1/大分類名1/中分類名1/小分類名1/品物名Y
大大分類名1/大分類名1/中分類名1/小分類名2/品物名Y
大大分類名1/大分類名1/中分類名1/小分類名3/品物名X
大大分類名1/大分類名1/中分類名1/小分類名3/品物名Z
大大分類名1/大分類名1/中分類名2/小分類名1/品物名X
大大分類名1/大分類名1/中分類名2/小分類名1/品物名Y
大大分類名1/大分類名2/中分類名2/小分類名1/品物名X
大大分類名1/大分類名2/中分類名2/小分類名1/品物名Y
・ツリー全体表示

【80392】Re:実行時エラー1004 "Selection.S...
お礼  めろん  - 19/2/9(土) 15:01 -

引用なし
パスワード
   ありがとうございました。
無事解決しました。
まだまだ勉強が足りませんが、今後ともよろしくお願い申し上げます。
・ツリー全体表示

【80391】Re:時間の足し算を行うと、yyyy/mm/dd h...
発言  マナ  - 19/2/8(金) 20:51 -

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

正しく集計できているのでしょうか
・ツリー全体表示

【80390】Re:実行時エラー1004 "Selection.S...
回答  亀マスター  - 19/2/8(金) 18:56 -

引用なし
パスワード
   一般的に、エラー1004は存在しないものを操作しようとしたときに発生します。

今回の場合、
Selection.SpecialCells(xlCellTypeConstants, 23)
これは選択中のセル(Selection)の中で定数を含むセルSelection.SpecialCells(xlCellTypeConstants, 23)を指定しますが、選択中のセルの中に定数を含むセルがなければ、存在しないセルのInterior.ColorIndexを操作しようとしたときにこのエラーが発生するのではないかと思います。

そのため、該当するセルが存在するかどうかのチェックを入れる必要があるでしょう。

なお、Selection.SpecialCells(xlCellTypeConstants, 23)の中の「23」が何かはわかっているでしょうか?
ここでは検索対象となるものを指定していますが、
xlNumbers(=1)、xlTextValues(=2)、xlLogical(=4)、xlErrors(=16)の合計が23ということなので、わかりやすくするために
xlNumbers + xlTextValues + xlLogical + xlErrors
を指定した方がいいでしょう。
・ツリー全体表示

【80389】実行時エラー1004 "Selection.Spec...
質問  めろん  - 19/2/8(金) 11:13 -

引用なし
パスワード
    所定のシートに下記のコードがあります。
E列の選択の際に、同一列に選択セルと同じ値がある場合に当該セルおよび当該セルと同じ行のB列について、セルの色が変わるという仕様です。
この仕様で実行時エラー1004が発生します。
このシートの保護(A1:A4とA2:H201以外を保護)と"Selection.SpecialCells" を併用していることが原因ではないかと考えています。
シートの保護は現状の範囲としたいのですが、エラーの回避策はどのようにすればよろしいのでしょうか。ご教示のほど何卒よろしくお願い申し上げます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 5 Then Exit Sub
Dim Trang As Range, Lrang As Range
Application.EnableEvents = False
  Selection.SpecialCells(xlCellTypeConstants, 23).Interior.ColorIndex = 0
  For Each Lrang In Selection.SpecialCells(xlCellTypeConstants, 23)
    If Lrang.Address <> ActiveCell.Address Then
    If Lrang.Value = ActiveCell.Value Then
    Lrang.Interior.ColorIndex = 38
    Lrang.Offset(0, -3).Interior.ColorIndex = 40
    ActiveCell.Interior.ColorIndex = 38
    ActiveCell.Offset(0, -3).Interior.ColorIndex = 40
    End If
    End If
  Next
Application.EnableEvents = True
End Sub
・ツリー全体表示

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