2017-01-04 7 views
0

列Aの値に基づいて変更する必要がある特定の値のテーブルがあります。データはAnalysis \ xxという見出しの列にあります。 1から60までの可変の値です。列の数は行ごとに異なるため、行4はAnalysis \ 4に、行5はAnalysis \ 30に移動することがあります。 Analysis \ xxフィールドに表示されるすべての値を更新する必要があります。この場合、ある値が列Aに存在します。Excel VBAで可変数の列を持つテーブル内のセルの値を更新する

固定の列位置に基づいて値を更新するコードがありますが、可変数の列を更新するために各行を反復処理します。

感謝の意を表します。

私は以下のデータのサンプルを添付して、バリエーションの良い選択肢を示しています。修正する必要がない列は隠されています。行26は、実際には列NBまでずっと進んでいる。

Data Sample

答えて

0

はあなたがそれぞれの行をループし、列Aをfollwoingコードをオフに使用し、この場合にはちょうど同じ行の列の値を印刷することができます名前を持っています。

Sub Tester() 

Dim rg As Range 
Dim rgA As Range 
Dim sngCell As Range 

    Set rg = Range("Your TableName") 
    Set rgA = rg.Columns(1) 
    For Each sngCell In rgA.Rows 
     Debug.Print sngCell.Offset(, 3).Value2 
    Next 

End Sub 

正しいコードがありますか?

EDIT:あなたはlistobjectを使用すると仮定すると、このコードはあなたに上記のサンプルで

Sub ChangeTable() 

Const ACCT_NO = "ABCD1234" 
Const HEADING = "Analysis*" 
Const NEW_VAL = "80321" 

Dim tbl As ListObject 
Dim x As Long 
Dim i As Long 
Dim hdrCount As Long 

    Set tbl = ActiveSheet.ListObjects("Your Name here") 
    hdrCount = tbl.HeaderRowRange.Columns.Count 

    For x = 1 To tbl.ListRows.Count 
     With tbl.ListRows(x) 
      If .Range(1, 1).Value2 = ACCT_NO Then 
       For i = 2 To hdrCount 
        If tbl.HeaderRowRange(i).Value2 Like HEADING Then 
         .Range(1, i).Value = NEW_VAL 
        End If 
       Next 
      End If 
     End With 
    Next 

End Sub 
+0

私はそうだと思いますが、ヘッダー行の値がAnalysis \ xxという列を探す必要があります。各ファイルで分析カラムの数が変化し、4〜60+のいずれかになります。私は変更したくないデータを少なくとももう50列も持っています。 – AlanB

+0

間違って入力してください。クエリは、accountnumber = ABCD1234、列見出し=分析\ 1〜x、交点の値を80321に変更する各セルに対してロジック 'を使用する必要があります。 – AlanB

+0

質問:シートでListオブジェクトを使用していますか? – Storax

0

ハローあなたはTEST1がVaribaleあなたが交換したいとしているため、このようなものを使用しようとしたとTest2をあなたがそれをchnageしたい変数のですか?このコードは、ワークシート全体に対して行います。あなたのテーブルを想定し

Sub Macro1() 

    Cells.Replace What:="TEST1", Replacement:="Test2", LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False 
End Sub 
+0

を助けるかもしれない、AccountNumberをABCD1234の列分析\ xxの中のすべての値は関係なく、どのような分野の、80321に変更する必要があります現在含まれています。新しいAnalysis \ xxの値は、AccountNumberによって固定されます。私は列の見出しがAnalysis \ xxである値を変更する必要があります。上記のデータでは、Analysis \ 57(変更されていない他の関連データを含めて366列幅)になります。通常、各ファイルには約200行あり、おそらく20〜30個が影響を受けます。 – AlanB

関連する問題