0

わかりました、私はこのトピックについて多くの調査を行いましたが、答えを見つけることができなかったので、ここに行きます: 望ましくない順序で受け取っているデータがあります (日付、時間などの見出しを持つ列だけです.これらの見出しの下のデータ) 私の目標は、手動で (別のワークシートで) 既に並べ替えられているテンプレートから望ましくないデータを並べ替えることです。私の現在のアイデアは、次のようなものを使用して2つの配列を指定することです:

SetRng1 = Application.InputBox("Select The Formatted Range of Channel Names", Type:=8)

SetRng2 = Application.InputBox("Select The Unformatted Range of Channel Names", Type:=8)

Rng1 要素を使用して Rng2 要素を並べ替えます。ただし、Rng1 のチャネルが常に Rng2 にあるとは限りません。この場合、フォーマットされたデータ (Rng1) からのチャネルを正しい順序で挿入し、その下に空白セルを挿入する必要があります。Rng1 にないチャネルが存在する Rng2 の場合と同様に、これらはチャネル リストの最後にプッシュする必要があります。また、Rng1 と Rng2 の見出しの名前と数は常に変化するため、要素を見つけてチャネル名だけでソートすることはできません。私の vba の知識は、この作業を行うのに十分ではないことを認めるのは恥ずかしいことです。ご不明な点がありましたらお知らせください。

4

1 に答える 1

0

これは答えではありません。 あなたの質問を理解しようとする試みであり、その背後には興味深い問題があると思われます。問題に関する正しい推測をこのテキストから質問にコピーし、間違った推測を置き換える必要があります。

データを配列に保持することはできないため、問題の途中を説明する必要があります。書式設定されたデータを含むワークシートがあり、ワークシートにマージされる新しいデータの CSV ファイルを時々受け取ると思います。

説明を簡単にするために、これを使用してフォーマットされたデータを表します。

Name   Week  Mon  Tue  Wed  Thu  Fri
John      1    5   10   12   4     3
Gwen      1    3   15    3   1     8
John      2    3    7   18   6     4
Gwen      2    9   20    4   1     7

フォーマットされた名前が変更または追加される可能性があるとあなたは言います。おそらく上司は、月、火などはくだけすぎて、週の名前を綴ってほしいと判断したのでしょう。おそらく、土曜日と日曜日を追加して、日曜日が週の最初の日か最後の日かという議論に入るでしょう。

CSV ファイルの列見出しが、書式設定された列見出しと常に一致するとは限らないとおっしゃっています。書式設定されたヘッダーが省略されていないのに、CSV ヘッダーが省略されている可能性があります。おそらく、CSV の見出しはスペイン語です。おそらく、ラッシュ期間中は公共の休みがあるので、ジョンとグウェンは火曜日から土曜日まで働きます. おそらく、金曜日は新しいスタッフの安息日なので、彼らは日曜日から木曜日まで働きます。

ユーザーに2つの見出しシーケンスを選択させるために使用することを考えていInputBoxますが、それがどのように機能するかわかりません。

まず、ワークシートを見て、目的のシーケンスを見つけることができます。ユーザーは何も選択する必要はありません。

第 2 に、ユーザーが CSV ファイルの名前セットとシーケンスを選択するには、マクロが可能なすべての名前セットとシーケンスのリストを保持している必要があります。それは可能ですか?CSV ファイルには新しい見出しが含まれている可能性があると述べているため、そうではないと思います。

見出しの 2 つのセットが次のとおりであるとします。

Worksheet: Name   Week  Mon  Tue  Wed  Thu  Fri
 CSV file: Staff  WoY   Sun  Mon  Teu  Wed  Sat

名前列と週列には異なる名前があります。火曜日の綴りが間違っているという合併症を伴う別の平日があります。

CSVファイルに合わせたリストを用意してくれる?その場で違いを修正しようとしますか? 準備されたリストの完全なセットが可能だとは思いません。2 つ目は、限られた利益のために、巧妙で複雑なコードが必要になります。

(1) 要件を単純化し、(2) 代替名のテーブルを用意します。

簡単にするために、フォーマットされたデータに可能なすべての列を事前に含める必要があります。CSV ファイルに以前は不明だった土曜日が含まれている場合、CSV ファイルを適用する前に追加する必要があります。リストにない場合は、「Teu」を追加しようとしません。

私の代替テーブルは非表示のワークシートにあり、すべての行が同じ列の代替名のリストを定義する次のようなものになります。

Name   Staff      Staff member
Week   WoY        Week of year
Mon    Monday     M
Tue    Tuesday    Tu            Teu
Wed    Wednesday  W
Thu    Thursday   Th
Fri    Friday     F
Sat    Saturday   Sa            St
Sun    Sunday     Su            Sn

このテーブルはあいまいさを処理できません。が与えられた場合、最初が火曜日で、2 番目が木曜日であるとM T W T F推測できませんでした。T

必要に応じて、スペルミス ( などTeu) を含めることができます。

ワークシートと CSV ファイルの両方のすべての列ヘッダーがこのテーブルにある必要があります。認識されない列ヘッダーがあると役立つメッセージが表示されるため、ユーザーはマクロを再実行する前にワークシート、代替表、または CSV ファイルを修正できます。

VBA に問題があるかもしれませんが、最初に設計上の問題があると思います。

幸運を。

于 2012-12-01T11:47:33.133 に答える