0

ほとんどが.xlsx. テーブルには3列と多くの行(数百万)が含まれているため、データについて考えることができます。

これを実装するマクロを作成したい:

隣接するセルのセルが空かどうかを確認し、上のセルにマージします。

if (the cell on your left is empty):
     merge yourself to the above cell;

VBの知識がないのですが、自分で実装したいのですがどうすればいいですか?

4

1 に答える 1

1

これ以上の情報がなければ回答するのは困難ですが、これはいくつかの問題の概要を示しています。

対象のセルの行と列を格納する場所が必要です。

Dim ColCrnt As Long
Dim RowCrnt As Long

列を実行したい場合は、次のように記述できます。

ColCrnt = 5     ' 5 represents column "E".  Columns are numbered from 1.

For RowCrnt = 1 to 1000
  'Update code.
Next

カーソルを移動してからマクロを呼び出したい場合は、次のように記述できます。

ColCrnt = ActiveCell.Column
RowCrnt = ActiveCell.Row
' Update Code.

更新コードがアクティブなワークシートで動作すると仮定すると、次のようになります。

If Cells(RowCrnt, ColCrnt - 1).Value = "" Then
  Cells(RowCrnt-1, ColCrnt).Value = _
          Cells(RowCrnt-1, ColCrnt).Value & Cells(RowCrnt-1, ColCrnt).Value    
  Cells(RowCrnt, ColCrnt).Value = ""
End If

Cells(RowCrnt, ColCrnt).Value現在のセルの値です。RowCrnt から 1 を引くと、上のセルが参照されます。ColCrnt から 1 を引くと、左側のセルが参照されます。

Cells(RowCrnt-1, ColCrnt).Value = Cells(RowCrnt-1, ColCrnt).Value & Cells(RowCrnt-1, ColCrnt).Value現在のセルの値を上のセルの末尾に連結します。

Cells(RowCrnt, ColCrnt).Value = ""現在のセルをクリアします。

そう:

       |    E    |
       |---------|
       | The     |
       | cat     |

になります:

       |    E    |
       |---------|
       | Thecat  |
       |         |

「The」と「cat」の間にスペースが必要な場合:

  Cells(RowCrnt-1, ColCrnt).Value = _
       Cells(RowCrnt-1, ColCrnt).Value & " " & Cells(RowCrnt-1, ColCrnt).Value    

新しい行に「猫」が必要な場合::

  Cells(RowCrnt-1, ColCrnt).Value = _
      Cells(RowCrnt-1, ColCrnt).Value & vblf & Cells(RowCrnt-1, ColCrnt).Value    

注: セルは非常に長い文字列を取ることができますが、先頭のみが表示されます。

これで始められることを願っています。

于 2012-04-21T23:32:00.943 に答える