2017-10-31 1 views
1

2行目から始まる列Bのヘッダーと列Cのデータで、Excelにデータがあります。私の仕事は、セルC15から最後の列の終わりまで、おそらくF15、おそらくZ15であるかどうかをチェックすることです。空白の場合は、その行のヘッダーであるB15を削除できます。横にあるセルが空白であるかどうかをチェックしてから、ヘッダーvbaを非表示にします。

ここでは、セルB15にヘッダーがあるため、行15のすべての値が空白になっているかどうかを確認できません。私は毎週のデータを取得するので、最後の列が変わる理由です。

データがない場合や同じデータを持っている場合は、データが15行目であっても同じではなく、私のヘッダB15が保持されている必要があります。私は私のヘッダー、B15を削除したいと思います。

私はいくつかのvbaコードを書いたが、それは欲望の結果をもたらしていない。

Sub test() 
Dim LR3, z As Long 
Dim ws As Worksheet 

Set ws = Worksheets("wc") 


LR3 = ws.Cells(2, Columns.Count).End(xlToLeft).Column 
For z = 3 To LR3 
    'start position 
    If ws.Cells(15, z).Value = ws.Cells(15, z + 1).Value Then 
     ws.Cells(15, 2).Value = "" 
    End If 
    Next z 
End Sub 

答えて

1

私は実際にあなたの仕事を理解していませんが、あなたのループを修正しようとしました。私はあなたが列cから始まる最後の行を反復したいと思ったので、そうですか?私は私のコードか、変更のコードを実行したときに、今

Option Explicit 

Sub test() 
    Dim LC3, z As Long 
    Dim ws As Worksheet 
    Dim startColumn As Integer 
    Dim checkRow As Integer 
    Dim headerColumn As Integer 
    Dim allTheSame As Boolean 
    Dim allEmpty As Boolean 

    Set ws = Worksheets("wc") 
    LC3 = ws.Cells(ws.UsedRange.Rows.Count, 2).End(xlToRight).Column 
    startColumn = 3 
    checkRow = 15 
    headerColumn = 2 

' 'if first column is blank delete the header 
' If ws.Cells(checkRow, startColumn).Value = "" Then 
'  ws.Cells(checkRow, headerColumn).Value = "" 
'  Exit Sub 
' End If 
' 
    allTheSame = True 
    allEmpty = True 

    For z = startColumn To LC3 
     'if any column is blank delete the header 
'  If ws.Cells(checkRow, z).Value = "" Then 
'   ws.Cells(checkRow, headerColumn).Value = "" 
'   'Exit For 
'  End If 
     'if one is not the same delete header 
'  If z + 1 <= LC3 Then 
'   If ws.Cells(checkRow, z).Value <> ws.Cells(checkRow, z + 1).Value Then 
'    ws.Cells(checkRow, headerColumn).Value = "" 
'    Exit For 
'   End If 
'  End If 
     'if any column is blank delete the header 
     If ws.Cells(checkRow, z).Value <> "" Then 
      allEmpty = False 
      'Exit For 
     End If 
     'if all are the same, delete header 
     If z + 1 <= LC3 Then 
      If ws.Cells(checkRow, z).Value <> ws.Cells(checkRow, z + 1).Value Then 
       allTheSame = False 
      End If 
     End If 
    Next z 
    If allTheSame Or allEmpty Then 
     ws.Cells(checkRow, headerColumn).Value = "" 
    End If 
End Sub 
+0

の問題は、私はデータ(同じ)を持っているか、いない場合、私はいつも間違っている私のヘッダを削除します、どんなにです。 – sc1324

+0

thats ws.Cells(15、2).Value = "" ...でヘッダを削除するので、ループ内で何をしますか? – stefan

+0

私はちょうどチェックして、列のcから行15のセルが同じ値を持っているかどうかを確認しようとしています。もしそうなら、私はヘッダを削除したいと思います。 – sc1324

0
If Application.Worksheetfunction.CountA("C" & z & ":Z" & z) = 0 then 

'Row z has no entries between C and Z 
+0

ありがとうございますが、動作していません。私はC列から何も持っていないとき、ヘッダーは削除したいままです。 – sc1324

関連する問題