システムwiki

データの既存のコードを抽出するvbaヘルプ

camcafe 受付中 最終更新日:2020-08-19 21:15

こんにちは、

既存の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)

1 #
AshishM

HI、

クエリエディタを使用してこの質問を解決しました(data>Get&Transform).入力ワークシートに数行のデータを追加してから、[データ]>[すべて更新]をクリックすることもできます.出力ワークシートに移動します.あなたは私の解決策ワークブックをダウンロードすることができます

これが役立つことを願っています.

応答1# ->にスキップ
2 #
camcafe

ashish、

あなたは私が理解できるようにクエリを説明することができますか?名前の一部が変更されたため、クエリを編集するには、table内の名前を認識しないようにしてください.

応答2# ->にスキップ
3 #
AshishM

こんにちは、

[データ]>[クエリと接続]に移動します.開いたペインで、クエリを右クリックして[編集]をクリックします.「適用されたステップ」ペインに、私が作成したすべてのステップが表示されます.

お役に立てば幸いです.

応答3# ->にスキップ
4 #
camcafe

こんにちはアッシュティッシュ、

これまでのところあなたの助けをありがとう.私はあなたのデータを私のデータと交換し、それはうまくいきませんでした.

24レコードに入れるときに1レコード(最初のレコード)のみを返します.また、速度:MMS/Sを追加の列に追加しました.

データサンプルの "Speed:MMS/S"行は "Run Speed; E通常のmm/s"になりました.スピード行を削除すると、それが役立ちますか?

応答4# ->にスキップ
5 #
camcafe

列Aの名前を変更するには、クエリの変更が必要ですか?

応答5# ->にスキップ
6 #
camcafe

アシシュ、

パワークエリの理解に少し時間を費やした後、データに合わせてクエリステップを変更できます.すべてがうまくいきます.私がまだ理解していない1つの項目は、別の列を追加する方法です(使用できる期間列と同様に、
期間を最小値に変換するステップの(最後に設定記号が付いた式)(期間フィールドに* 24* 60を乗算する).

ご協力ありがとうございます.

応答6# ->にスキップ
7 #
AshishM

HI、

これが役立つことを願っています.

応答7# ->にスキップ
8 #
camcafe

こんにちはアッシュティッシュ、

数分(期間* 24* 60)を計算するために別の列を追加しますか?私はそれをクエリに追加する方法を知るのが好きです.ありがとう

応答8# ->にスキップ
9 #
AshishM

HI、

これが役立つことを願っています.