1

列Bと列Cを比較する必要があります。これらは実数のみで構成され、昇順で並べ替えられています。

実行したいコードはすでにありますが、コードの範囲を変更するためのサポートが必要です。

したがって、現在、コードは列Bと列Cを比較しています。

より明確な説明については、この画像を見てください。

Aの左側とDの右側にも列を追加し、それらをシフト範囲に追加できるように、コードの変更についてサポートが必要です。

基本的に、EとFを比較し、shiftB:Eとを比較しF:Iます。

Option Explicit
Sub AlignList()
' hiker95, 08/02/2012
' http://www.mrexcel.com/forum/showthread.php?651139-Compare-Column-B-amp-C-and-Shift
Dim r As Long, lr As Long, d As Range
Application.ScreenUpdating = False
lr = Cells.Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False).Row
Set d = Range("A1:B" & lr)
r = 1
Do While d.Cells(r, 2) <> ""
  If d.Cells(r, 2).Offset(, 1) <> "" Then
    If d.Cells(r, 2) < d.Cells(r, 2).Offset(, 1) Then
      d.Cells(r, 2).Offset(, 1).Resize(, 2).Insert -4121
    ElseIf d.Cells(r, 2) > d.Cells(r, 2).Offset(, 1) Then
      d.Cells(r, 1).Resize(, 2).Insert -4121
      lr = lr + 1
      Set d = Range("A1:B" & lr)
    End If
  End If
  r = r + 1
Loop
Application.ScreenUpdating = 1
End Sub
4

1 に答える 1

5

やろうとしていることを実行するためにマクロは必要ありません(奇妙な理由で自動的に実行しようとしている場合を除きます)。

列DとCをコピーして貼り付け、他のデータの下に配置してから(図を参照)、列BとCの最大値である5番目の列を追加します(これにより数値が取得されます)。

前に答える

そして、max列でソートする必要があります。

後に答える

編集:

これはかなり基本的なExcelなので、スクリーンショットをいくつかの小さな指示とともに投稿します。基本的に、あなたがやろうとしていること(これに気付いているかどうかはわかりません)は、2つのテーブルを組み合わせることです(本当に奇妙な方法であると認められています)。したがって、vlookupを少し創造的に使用することを除いて、私の元の指示に従うと、自分がやろうとしていることを完全に達成できます。スクリーンショットは次のとおりです。

したがって、vlookupをクリエイティブに使用します。 オリジナル

照合する必要のあるデータを照合できます。 Vlookup1

そして、これが他のvlookup列です。 Vlookup2

次に、データが一致したら、コピーアンドペーストですべてのデータを値に変換できます。 CopyPasteValues

次に、最大列を追加します。 MaxColumn

次に、並べ替えるだけで、必要なものを取得できます。 あなたが欲しいもの

次に、不要になった余分なデータを削除できます。 DeleteAnythingYouDoNotWant

うまくいけば、それはあなたを助けるでしょう。VBAを使用する唯一の理由は、このプロセスを自動化する場合です。ただし、これが1回限りの場合は、非常に時間がかかります。Excelは、データを操作することを目的としています-テーブルを一致させる-そのようなもの-その目的のためにそれを使用します。

于 2012-08-03T18:37:18.180 に答える