自分でスクリプトを作成するための VBA の知識がないアルゴリズムを探しています。だから私は立ち往生しています。試してみたからといって努力が足りなかったわけではありません (さらに、このコードのビットは、より大きな VBA コードの最後の残りの部分です) 知識/経験/スキルが不足しているだけです...
基本的に、私はExcelファイルを持っています。このファイルにはシート「sheet1」があります。Sheet1 には多数のデータ行が含まれています。sheet1 に含まれる行数は、1 から n まで変化します。あるときは 50 個、あるときは 30 個などです。一貫しているのは本のレイアウトです。つまり、列 A にデータベース内の製品を識別するコードがあります。
私がやりたいことはこれです:
1.シートをスキャンして空の行を探し(ワークブックの生成方法により、空白の行がある場合があります)、それらを削除します。これらの空白行は、データのある行の間にある場合もあれば、シートの末尾にある場合もあります。
2.空白行を削除した後、最後に使用された行を見つけます。それを変数に格納します。これを行うには、このコードが役立つことがわかりました。
mylastrow = myBook.Sheets("Results").Cells.Find(what:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
3. (2) で決定された行から始めて、A(x where x = mylastrow) の製品コードを取得し、それが他に出現する場所 (列 A) を見つけます。見つかった場合は、それに対応する行全体を削除します。重要なことに、このループは逆方向に進む必要があります。たとえばmylastrow = 40
、ループは A40 で開始し、次の反復で A39 (行が削除された場合は 38?) を開始する必要があります。これは、どの製品番号でも、行の対応するデータが列の下の方に多くのデータを含むためです (シートの生成方法による)。基本的に、最後の行に最も近いエントリが最新です。
うまくいけば、私はその場を適切に説明することができました. でももしそうじゃなくて、あなたが私の挑戦(私の重荷?)を喜んで引き受けてくれるなら、私はとても感謝しています。
準々決勝