データの既存のコードを抽出するvbaヘルプ
こんにちは、
既存のVBAコードを使用してデータをループし、特定のテキスト条件に基づいて列のデータを抽出する必要があります.
セルJ2から開始して抽出する必要があるフィールド:パーツ名、開始日、開始時間、終了日、終了時間、期間(分)(終了日/時間-開始日/時間)* 24* 60および日付.vbaはすべてのデータをループし、コピーして貼り付けます
列内.
プルする各新しいレコードは空白行で区切られます.複数の開始日と開始時刻がある場合があります.既存のコードで必要な助けは、レコードの各セットをループして、開始日と開始時間の最初の行を記録することです.
1つのレコード内.
これまでの私のVBAコード:
サブTEST()
Dim i、j As Integer
Dim Time1、Time2 As Long
Dim Date1、Date2 As Date
Dim Delta As Long
Worksheets( "Sheet1") .Activate
Time1 =#1/1/2019#
Time2 =#1/1/2019#
Date1 =#1/1/2019#
Date2 =#1/1/2019#
j=2
Range( "J2:N5000").Select
Selection.ClearContents
Range( "J2").Select
For i=2 To 5000
If ActiveSheet .Cells(i-1、2)= "" Then
ActiveSheet.Cells(j、10)= ActiveSheet.Cells(i、2)
End If
If ActiveSheet.Cells(i、1)="開始日" Then
If ActiveSheet.Cells(i、2)>Date1 Then
Else
ActiveSheet.Cells(j、11)= ActiveSheet.Cells(i、2)
End If
End If
If ActiveSheet.Cells(i、1)= "Measure Start Time" Then
If ActiveSheet.Cells(i、2)>Time1 Then
Else
ActiveSheet.Cells( j、12)= ActiveSheet.Cells(i、2)
End If
ElseIf ActiveSheet.Cells(i、1)= "Measure End Time" Then
ActiveSheet.Cells(j、14)= ActiveSheet .Cells(i、2).Value
End If
If ActiveSheet.Cells(i、1)= "End Date" Then
Ac tiveSheet.Cells(j、13)= ActiveSheet.Cells(i、2).Value
j=j + 1
Time1 =#1/1/2019#
Time2 =#1/1/2019 #
End If
Next
End Sub
SAMPLE_DATA:
メジャーパーツ名 |
2T32-5_SO |
開始日 |
2020年3月19日 |
速度:mms/s |
|
測定開始時間 |
午前11:29:59 |
メジャーパーツ名 |
2T32-5_SO |
開始日 |
2020年3月19日 |
速度:mms/s |
|
測定開始時間 |
午前11:34:53 |
測定終了時間 |
午後12:24:48 |
期間 |
|
終了日 |
2020年3月19日 |
メジャーパーツ名 |
6T31-1_CA |
開始日 |
2020年3月19日 |
速度:mms/s |
|
測定開始時間 |
午後3:17:11 |
測定終了時間 |
午後3:31:36 |
期間 |
|
終了日 |
2020年3月19日 |
メジャーパーツ名 |
2T32-5_SO |
開始日 |
2020年3月19日 |
速度:mms/s |
|
測定開始時間 |
10:30:20 PM |
メジャーパーツ名 |
2T32-5_SO |
開始日 |
2020年3月19日 |
速度:mms/s |
|
測定開始時間 |
午後11:47:50 |
メジャーパーツ名 |
2T32-5_SO |
開始日 |
2020年3月19日 |
速度:mms/s |
|
測定開始時間 |
午後11:49:50 |
測定終了時間 |
午前12:01:02 |
期間 |
|
終了日 |
2020年3月20日 |
希望するサンプル結果:
パーツ名 |
開始日 |
開始時間 |
終了日 |
終了時間 |
期間(分) |
2T32-5_SO |
2020年3月19日 |
午前11:29:59 |
2020年3月19日 |
午後12:24:48 |
54.8 |
6T31-1_CA |
2020年3月19日 |
午後3:17:11 |
2020年3月19日 |
午後3時31分36秒 |
14.4 |
2T32-5_SO |
2020年3月19日 |
午後11:47:50 |
2020年3月20日 |
午前12:01:02 |
90.7 |
移動元:Excel/Windows 10
/Office 2016
返信リスト(回答:9)
HI、
クエリエディタを使用してこの質問を解決しました(data>Get&Transform).入力ワークシートに数行のデータを追加してから、[データ]>[すべて更新]をクリックすることもできます.出力ワークシートに移動します.あなたは私の解決策ワークブックをダウンロードすることができます
これが役立つことを願っています.
応答1# ->にスキップ2 #camcafeashish、
あなたは私が理解できるようにクエリを説明することができますか?名前の一部が変更されたため、クエリを編集するには、table内の名前を認識しないようにしてください.
応答2# ->にスキップ3 #AshishMこんにちは、
[データ]>[クエリと接続]に移動します.開いたペインで、クエリを右クリックして[編集]をクリックします.「適用されたステップ」ペインに、私が作成したすべてのステップが表示されます.
お役に立てば幸いです.
応答3# ->にスキップ4 #camcafeこんにちはアッシュティッシュ、
これまでのところあなたの助けをありがとう.私はあなたのデータを私のデータと交換し、それはうまくいきませんでした.
24レコードに入れるときに1レコード(最初のレコード)のみを返します.また、速度:MMS/Sを追加の列に追加しました.
データサンプルの "Speed:MMS/S"行は "Run Speed; E通常のmm/s"になりました.スピード行を削除すると、それが役立ちますか?
応答5# ->にスキップ6 #camcafeアシシュ、
パワークエリの理解に少し時間を費やした後、データに合わせてクエリステップを変更できます.すべてがうまくいきます.私がまだ理解していない1つの項目は、別の列を追加する方法です(使用できる期間列と同様に、
期間を最小値に変換するステップの(最後に設定記号が付いた式)(期間フィールドに* 24* 60を乗算する).ご協力ありがとうございます.
応答7# ->にスキップ8 #camcafeこんにちはアッシュティッシュ、
数分(期間* 24* 60)を計算するために別の列を追加しますか?私はそれをクエリに追加する方法を知るのが好きです.ありがとう
関連質問
- 複数のテーブルに散布ヘッダーを結ぶ
- VBA/VB.NETで複雑な文字列を作成する方法
- Excel 365
- Excelの "固定オブジェクトが移動する"エラーが表示されます(ただし、オブジェクトが見つかりません).
- Excel-データビジュアライザテーブルをVisioにインポートします
- 企業のExcelモデルへの既存の従業員へのアクセスを制限します
- VBA-Excel-DialogSheets.Show 2021-廃止予定?
- 評価日2式2の式2
- 範囲としてのVBA-BYVALターゲット原因コピーと貼り付け問題
- 2セルをマージするマクロを作成し、合計を取得するためにマージセルをグループ化します.