0

次のようなよくレイアウトされたExcelスプレッドシートがあります。

| NAME | SERIAL | GUN1 | OPTIC1 | OPTIC 2 |
+-----------------------------------------+
| Jonn | W0465  | MK19 | 006000 |         | 
+-----------------------------------------+
| Jimm | W1465  | MD24 |        | 455212  | 
+-----------------------------------------+

そして、そのデータをフォームを含む別のシートに生成できるようにしたいと考えています。このフォームでは、項目ごとに 1 行 (ガン 1、オプティックなど) ありますが、全員がまったく同じ機器を持っているわけではありません (ジョンは OPTIC1 を使用し、ジムは OPTIC2 を使用していますが、オプティックをまったく持っていない人もいます)。

フォームは次のようになります (上記のサンプル データを使用)。

|  TYPE  | SERIAL | NAME |
+------------------------+
|  GUN1  |  MK19  | Jonn |
+------------------------+
| OPTIC1 | 006000 | Jonn |
+------------------------+
|  GUN1  |  MD24  | Jimm |
+------------------------+
| OPTIC2 | 455212 | Jimm |
+------------------------+

これを効率的に行う方法について何か考えはありますか? 条件ステートメントと参照が必要ですが、これらすべてを効果的に行う方法がわかりません。

etcを使用してデータを正常に参照できました=SHEET1!$C2。次に、「ジョン」の2行を作成し、すべてが完全に入力されました(絶対参照と相対参照を使用)。ただし、これらの 2 つの行を選択して複製しようとすると、 (C4 と C3 に注意してください)=SHEET1!$C4ではなく行が生成されます。=SHEET1!$C3Jonn のデータはフォーム上で 2 行の長さだったので、相対参照は元の Excel シートの 3 行目をスキップします。わかる?質問してください

ありがとう

4

1 に答える 1

1

そのため、表 1 のSERIAL列を無視していました (これが私を少し混乱させました)。

OPTIC1 または OPTIC2 (両方ではない) のいずれかを使用できることが保証できる場合は、ワークシート関数を使用できます。

両方を持っている可能性がある場合でも、それを行うことができますが、リストにギャップが生じる可能性があります.

両方ではなく 1 つのオプティックを持つことができ、両方のシートの行 1 が列のタイトルとして使用されると仮定しました。

ROW()関数といくつかの数学を使用して、リストを生成できます。

Sheet2!A2 ==IF((ABS(ROW()/2)+1-(INT(ROW()/2)+1))=0,"GUN1",IF(INDIRECT("Sheet1!D" & (INT(ROW()/2)+1))="","OPTIC2","OPTIC1"))

Sheet2!B2 ==IF((ABS(ROW()/2)+1-(INT(ROW()/2)+1))=0,INDIRECT("Sheet1!C" & (INT(ROW()/2)+1)),IF(INDIRECT("Sheet1!D" & (INT(ROW()/2)+1))="",INDIRECT("Sheet1!E" & (INT(ROW()/2)+1)),INDIRECT("Sheet1!D" & (INT(ROW()/2)+1))))

Sheet2!C2 ==INDIRECT("Sheet1!A" & INT(ROW()/2)+1)

これらの数式は、必要に応じてシートに自動入力されます (参照している行が入力されているかどうかを確認するチェックはありません)。

追加の列を追加する必要がある場合、または両方の光学系を使用できる場合は、VBA ソリューションを検討することをお勧めします。

アップデート

あなたの質問を読み直して、オプティックを持たないことがオプションであることを確認してください.

VBA を使用する必要があります。

于 2013-04-08T00:56:11.423 に答える