2012-02-26 7 views
1

私はExcelの初心者です。私が直面している問題は少しあります。Copyは、セルのデータをExcelの列に一番近いセルまで入力します。

私は私の別のプログラムにインポートする必要があるExcelシートを持っています。

Heading1 | Sub-heading1 | Sub-Sub-heading1 
     |    | Sub-Sub-heading2 
     |    | Sub-Sub-heading3 
     |    | Sub-Sub-heading4 
     | Sub-heading2 | Sub-Sub-heading1 
     |    | Sub-Sub-heading2 
     |    | Sub-Sub-heading3 
     |    | Sub-Sub-heading4 
Heading2 | Sub-heading1 | Sub-Sub-heading1 
and so on.. 

問題は、インポートする目的でセルを空白にしておくことができないことです。だから、Heading1Heading2の上のすべてのセルにコピーすることができ、column2とそれ以降のすべての行に表示されるすべてのデータに同じようなフォーラムラウンドが必要でした。

これは私のためのロードブロッキングを削除するので、大きな助けになるでしょう。

答えて

0

これは

  • 手動xlBlanksコレクションを持っているSpecialCells

    1を使用して、手動のいずれか(何のコード)またはプログラム(シンプルコード)を非常に迅速に行うことができませんあなたの最初のセルを選択します2列

  • プレスF5 ...特殊...ブランク
  • 数式バーのタイプ= A1ここで、A1は空白の新しい選択の上の最初のセルです
  • Ctrlキーを押しを押しながらこれは値

    2にこれらの式を変換する方法についての命令を含むhereもアップ書かれ

一度すべて空白のセルにこの数式を入力します。VBA

3つのサンプルは、第二のコードのこの修正版はWORなるhere

が設けられています。 k列のA:B(あなたのデータレイアウトのようです)

Sub FillColBlanks_Offset() 
'by Rick Rothstein 2009-10-24 
'fill blank cells in column with value above 
'http://www.contextures.com/xlDataEntry02.html 
'modified by brettdj 
Dim Area As Range, LastRow As Long 
On Error Resume Next 
With Columns("A:B") 
    LastRow = .Find(What:="*", SearchOrder:=xlRows, _ 
        SearchDirection:=xlPrevious, _ 
        LookIn:=xlFormulas).Row 
    For Each Area In .Resize(LastRow). _ 
     SpecialCells(xlCellTypeBlanks).Areas 
     Area.Value = Area(1).Offset(-1).Value 
    Next 
End With 
End Sub 
+0

あります。 500の「見出し」と、それに応じて複数の「サブ見出し」と「サブ見出し」を含む。彼が最後にセルを満たしたことを検出し、その点までコピーして速くする方法はありますか? – Cipher

+0

@Cipher。どちらの方法でも、実際のUsedRange内でSpecialCellが動作するため、Column A&Bで作業する場合、スプレッドシートの使用済み部分だけが更新されます(Rickのコードで最後に使用されたセルが見つからなくても)。 – brettdj

+0

優秀!ありがとう。その日を救った! – Cipher

関連する問題