ほとんどが.xlsx
. テーブルには3列と多くの行(数百万)が含まれているため、データについて考えることができます。
これを実装するマクロを作成したい:
隣接するセルのセルが空かどうかを確認し、上のセルにマージします。
if (the cell on your left is empty):
merge yourself to the above cell;
VBの知識がないのですが、自分で実装したいのですがどうすればいいですか?
これ以上の情報がなければ回答するのは困難ですが、これはいくつかの問題の概要を示しています。
対象のセルの行と列を格納する場所が必要です。
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
注: セルは非常に長い文字列を取ることができますが、先頭のみが表示されます。
これで始められることを願っています。