web-dev-qa-db-ja.com

連続していない空白のセルに、最初の空白より上のセルの値を入力します

私はこれをExcelまたはOpen Officeで条件付きで行う方法があるかどうか知りたいです:

if the cell is empty then
    the cell will have the same value as the cell above it
else
    do nothing.

これにはマクロを使用する必要がありますか?私を助けてください; Excelの使用経験はほとんどありません。

c 1 | 2011/10/21
c 2 |
c 3 |
c 4 | 2011年10月24日
c 5 |
c 6 |
c 7 | 2011年10月25日
c 8 |
c 9 |
c10 | 2011年10月26日

9
jonestars
  1. 塗りつぶす必要のある空白のセルを含む範囲を選択します。

  2. [ホーム]> [検索と選択]> [特殊文字に移動…]をクリックすると、[特殊文字に移動]ダイアログボックスが表示され、[空白]オプションをオンにします。

  3. [OK]をクリックすると、空白のセルがすべて選択されています。次に、選択範囲を変更せずに、数式「= B2」をアクティブセルB3に入力します。このセル参照は、必要に応じて変更できます。

  4. Ctrl + Enterキーを押すと、Excelはそれぞれの数式をすべての空白セルにコピーします。

  5. この時点で、入力された内容は数式であり、フォーマルを値に変換する必要があります。次に、範囲全体を選択し、右クリックして[コピー]を選択し、Ctrl + Alt + Vを押して[形式を選択して貼り付け...]ダイアログボックスをアクティブにします。貼り付けから値オプションを選択し、操作からなしオプションを選択します。

  6. 次にOKをクリックします。そして、すべての数式が値に変換されています。

28
Nikhil

Excelの場合:

誰かがセルをマージしたテーブルがある場合、またはHTMLサイトからテーブルをコピーしている場合、実際には同じ値を持つ空の行など、コピーされたデータに多くの不整合がある可能性があります。前の行でこれを修正する簡単な方法は、空の列に移動して次の数式を作成することです。

これは、A1にヘッダーがあり、A2に最初のデータと有効な行の値が含まれていることを前提としています。
他のすべてのセルのみが空の場合、次のことができます。

= if(A2="",A1,A2)

上記の関数は、A2が空白かどうかをチェックし、空白の場合はA1の値を割り当て、空白でない場合はA2の値を割り当てます。


ただし、入力する必要がある空の行が複数ある場合は、次のことを行うことをお勧めします。
(後続のすべての空のセルに複製する値を持つセルがA2で始まると仮定します。次の列の最初の2つのセルを手動で設定してもかまいません。列I:Iはテーブルの最初の空の列です)

ステップ1:セルI2およびI3で、関連する行に適切な値が存在することを確認します。
ステップ2:セルI4に次の数式を入力します。

= if(A4="",if(A3<>"",A3,I3),A4)

上記の関数は、A4が空白かどうかをチェックし、ISの場合は、A3が空白でないかどうかをチェックします。実際にそうでない場合は、A3の値を割り当て、それも空白の場合は、 I3、最後に、A4が空白でない場合は、A4の値を割り当てます。

数式を手動で下にドラッグする必要があります(空の行があるため)。

不要なデータに続く空の行は、キーフィールドで列を並べ替えることで簡単に識別できます。

上記のロバートが示したように、数式の値を扱っているので、値を移動してソースセルを上書きすることはできませんが、「特別な」貼り付けを行うと、値をソースセルに直接貼り付けることができます。

3
xsquires

これは私がかつて書いたものです:

Sub FillInBlankCellsInColumns()
 'Go down and when you find an empty cell, put the value from the previous cell in there.
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Dim MyCounter As Long
MyCounter = 0
    For Each r In Selection
        On Error Resume Next
        If r.Value = "" Then
            r.Value = r.Offset(-1, 0).Value
        End If
    Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
2
Robert Ilbrink

Debra Dalgleishは、

  • 手動SpecialCellsメソッド(Excellllが参照)
  • VBA SpecialCellsメソッドは、FOCの領域のようです

彼女のサイトの Excelデータ入力-Excel列の空白セルを入力

1
brettdj

vlookupを使用する

=+VLOOKUP("Output",D1:G7,1)
  • D1を検索する開始セルのアドレスに置き換えます
  • G7を検索する終了セルのアドレスに置き換えます
  • 1を、値を返す列に置き換えます
 Apple 1 Apple 
 2 Apple 
 7 Apple 
 Mango 3 Mango 
 ====== =============== 
 col1 Col2 Formula 
0
user2733648

または、新しい列で次の数式を使用することもできます。

D2:=IF(ISBLANK(C2),D1,C2)

  • Cの横に新しい列を作成します。
  • 以前の列Dは列Eと名付けられます。データは列Cにあり、新しいデータは一時的に列Dに作成されます。
  • C1の最初の値を手動でD1にコピーする必要があります
  • 次に、D2にこの式を入力します。数式をずっと下にコピーします。
  • 次に、列Dをコピーし、Paste-Special Values Onlyを使用して、列Cの既存のデータの上に列Dの結果を貼り付けます。
  • これで列Dを削除できます

これはもう少し「作業」ですが、Excelの経験がないと述べているので、マクロの作成は困難な場合があります。

よろしく、

ロバート・イルブリンク

0
Robert Ilbrink