3

ソートする必要がある MYOB からダンプされたデータがあります。MYOB によってダンプされるデータは、次の形式です。

  • BSB 番号: 000-000
  • 銀行口座番号: 123456789
  • 銀行口座名: 会社名

これらのセルの右側に、シーケンスであると判断した 1 または 2 または 3 を返す if ステートメントを追加しました。

1,2,3 のシーケンスが保持されていない場合、データの行全体を削除できるマクロまたは方法はありますか?

例:

  • BSB 番号: 000-000 1
  • 銀行口座番号: 123456789 2
  • 銀行口座名: 会社名 3
  • BSB 番号: 000-000 1
  • 銀行口座番号: 123456789 2
  • 銀行口座名: 会社名 3
  • BSB 番号: 000-000 1
  • 銀行口座名: 会社名 3
  • BSB 番号: 000-000 1
  • 銀行口座番号: 123456789 2
  • BSB 番号: 000-000 1
  • 銀行口座番号: 123456789 2
  • 銀行口座名: 会社名 3

シーケンスは 1、2、3 の順である必要があります。シーケンスが壊れた場合は、行を削除する必要があります。

これは可能ですか?

ありがとう!

4

2 に答える 2

1

簡単な VBA マクロ。データが列 C (=3) であると仮定します。
行を削除する必要がある場合は、列 D に「x」を書き込みます。

Sub sort()
Application.ScreenUpdating = False
For i = Columns(3).Find("*", [C1], , , , xlPrevious).Row To 4 Step -1

  Merge = Cells(i - 0, 3).Value _
        & Cells(i - 1, 3).Value _
        & Cells(i - 2, 3).Value _
        & Cells(i - 3, 3).Value

  If Merge = "4321" Then
    i = i - 3
  Else
    Cells(i, 4) = "x"
  End If

Next i
Application.ScreenUpdating = True
End Sub

最初の 4 行がソートされていないため、完全ではありません。しかし、それは始まりです。
他の人が答えを改善できるかもしれません。

ここに画像の説明を入力

于 2013-01-31T23:02:59.427 に答える
0

私はあなたの質問が本当に好きで、ちょっと困惑しました-そのための+1 !!

私がそれを思いつくことができた唯一の方法は、あなたの3つの可能性を列挙するかなり醜い式を使うことでした。セルから始めて列Bに数値があるとするとB1、この数式はセルB4以降で機能します(つまり、最初の3つの結果を自分で確認する必要があります)。

=IF(OR(AND(B4=1,B5=2,B6=3),AND(B3=1,B4=2,B5=3),AND(B2=1,B3=2,B4=3)),TRUE,FALSE)

次に、この数式が値を返す行を削除するだけFALSEです。

私はまだそれをもっと考えて、もっとエレガントな解決策を考えてみますが、これは間違いなくうまくいくでしょう。

編集(コメントに基づく)

スクリーンショットが示すようにを許可するには4、で数式を開始するB5と、次のようになります。

=IF(OR(AND(B5=1,B6=2,B7=3, B8=4),AND(B4=1,B5=2,B6=3,B7=4),AND(B3=1,B4=2,B5=3,B6=4),AND(B2=1,B3=2,B4=3,B5=4)),TRUE,FALSE)
于 2013-01-31T22:28:05.220 に答える