0

私はこのExcelレポートに取り組んでいます。ここに例を添付せずに説明するのは少し難しいです。だから、私はそれを手動で入れようとします...このワークシートをAと呼びましょう:

ENV    SYSTEM    ACTION     CRQ
--------------------------------
PROD   RAC2       PATCH     12345
DEV    te2ds      STAGE     34672
DEV    te2ds      PATCH     34294
PROD   PRAC5      STAGE     47382
PROD   hq2/DBNAME PATCH     47389

etc....

これは、私が持っている Excel テーブルのほんの一部です。また、別のワークシート X があります。

SYSTEM   DBNumber
--------------------
RAC2       30
te2ds      10
PRAC5      12
hq2        3 

etc...

だから、私が達成しようとしているのは、ある種のコード(できればExcelの数式..この場合はあまり役に立たない)が自動的に「入る->ワークシートA、システムからセルを読み取る」ことです列 --> ワークシート X からその名前を見つける --> DBNumber の下の相対番号を、新しいワークシート (または指定したワークシート) の下のセルに、その右側のシステム名の横に配置します。--> そのシステム名/番号が既にコピーされている場合は、そのセルをスキップします。それは理にかなっていますか?すべての入力に感謝します! これについて本当に助けが必要です。:)

4

2 に答える 2

2

以下はあなたのために働くはずです:

  1. まず、ワークシート A の「システム」列のリストを調べます
  2. 一意のシステム名の配列を作成します
  3. シート x の値の参照
  4. シート z の相対値をコピーします

次のコードを使用できます。

Sub unique()

      Dim systemNameCollection As New Collection
      Dim systemNames() As Variant
      Dim i As Long
      Dim rRng As Range

      'Define the range  and assign Values to Array

      ThisWorkbook.Sheets("Sheet1").Select
      Set rRng = ThisWorkbook.Sheets("Sheet1").Range("A2", Range("A65536").End(xlUp))
      systemNames() = rRng.Value

      On Error Resume Next

      'Add values in Collection

      For Each a In systemNames
         systemNameCollection.Add a, a
      Next

      'run following code to take the unique value from Sheet1 - Lookup for value in Sheet2 
      'and copy relative number in sheet2 to sheet3

      ThisWorkbook.Sheets("Sheet2").Select
      Set rRng = Range("A2", Range("A65536").End(xlUp))

      ThisWorkbook.Sheets("Sheet3").Select

      For i = 1 To systemNameCollection.Count
          For Each Value In rRng
            If systemNameCollection(i) = Value Then
                Range("A65536").End(xlUp).Select
                ActiveCell.Offset(1, 0).Value = systemNameCollection(i)
                ActiveCell.Offset(1, 1).Value = Value(1, 2)
                Exit For
            End If
          Next
      Next    
End Sub
于 2013-05-16T10:42:53.413 に答える
0

番号が必要な唯一のシステム名は SheetX にあるため、それが制限要因です。System 列全体を SheetX から新しいシートにコピーし、VLOOKUP 関数を IF ステートメントと組み合わせて使用​​して、対応する数値を取得できます。

例:

  1. SheetX、System列をコピーして新しいSheetYに貼り付けます
  2. SheetY の System 列の右側に、Number という別の列を追加します。
  3. SheetY の情報をテーブルにします (この例では Table1 と仮定します)。
  4. SheetY の Number 列の各セルに、次の式を挿入します。

=IF(ISNA(VLOOKUP(Table1[システム],SheetA!$B,1,False)),"",VLOOKUP(Table1[システム],SheetX!$A:$B,2,False))

この式は...

  • 最初に、SheetY の System 値が SheetA のリストにあるかどうかを確認します。
  • そうでない場合は、そのセルを「スキップ」します。
  • そうである場合は、SheetX から対応する番号を見つけます。

最後のステップ: SheetY に重複するキーと値のペアがあることが懸念される場合は、手順 1 ~ 4 を実行してから、SheetY のデータに対して重複を削除します。

于 2015-11-10T01:42:26.400 に答える