0

下部のコードは、列を1つのシートから別のシートに個別にコピーし、テキストを1つずつ列に実行します。たとえば、列Aが処理された後、列B(最初のシート)のテキストから列への手順は、2番目のシートで次に使用可能な空の列から開始されることになっています。

最初のシートの行の長さは異なります。したがって、列AのセルA1:A25がいっぱいになる可能性がありますが、一部の行が終了しているため、列Nのセルの一部だけがいっぱいになる可能性があります。

このコードは、最初の部分的にいっぱいの列に遭遇するまで正常に機能し、その後、同じ列に列を貼り付け続けます。

以下の行でこれを処理できると思いましたが、機能していないようです。

If Application.WorksheetFunction.CountA(Excel.Sheets("Organise_R").Columns(b)) > 0  Then b = b + 1

私はここ数時間試してみましたが、成功しませんでした。どんな助けでも大歓迎です!前もって感謝します!

For a = 1 To 60

'If Excel.WorksheetFunction.CountBlank(Excel.Sheets("Import_R").Columns(a)) < 1048576
If Application.WorksheetFunction.CountA(Excel.Sheets("Import_R").Columns(a)) > 0 Then

    Excel.Sheets("Import_R").Columns(a).Copy

    b = Excel.Sheets("Organise_R").Cells(1, Columns.Count).End(Excel.xlToLeft).column

    Excel.Sheets("Organise_R").Select

    'If Cells(1, b) <> ""
    'If Excel.WorksheetFunction.CountBlank(Excel.Sheets("Organise_R").Columns(b)) < 1048576 Then
    If Application.WorksheetFunction.CountA(Excel.Sheets("Organise_R").Columns(b)) > 0 Then b = b + 1


        Excel.Sheets("Organise_R").Columns(b).EntireColumn.Select
        Excel.ActiveSheet.Paste

        Excel.Application.CutCopyMode = False
        Selection.TextToColumns Destination:=Cells(1, b), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
                Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
                :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
                Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True

End If



Next a
4

1 に答える 1

1

これは私が行う方法ではありません-具体的には、私はあなたのコード行を理解していません:

If Application.WorksheetFunction.CountA(Excel.Sheets("Organise_R").Columns(b)) > 0 Then b = b + 1

私はあなたが最後の列を見つけるためにここでループが必要だと思っているので、これは別の問題です。

しかし、私はあなたの質問に答えると思います、あなたUsedRangeはあなたのシートの最後の列を見つけるために方法を使うほうがよいでしょう、多分このようなもの:

    b = Excel.Sheets("Organise_R").UsedRange.Columns.Count

ラインを置き換えるには:

    b = Excel.Sheets("Organise_R").Cells(1, Columns.Count).End(Excel.xlToLeft).column

お役に立てれば。

于 2012-11-14T14:23:28.653 に答える