如何使excel停止处理列为日期

时间:2018-03-06 08:14:08

标签: excel excel-formula formatting

我的列值如下:

public interface IMessageSender
{
    int MessageType { get; }

    void Send();
}

public class TypeOneMessageSender : IMessageSender
{
    public int MessageType => 1;
    public void Send()
    {
        //logic here for sending 1 type of message
    }
}

public class TypeTwoMessageSender : IMessageSender
{
    public int MessageType => 2;
    public void Send()
    {
        //logic here for sending 2 type of message
    }
}

public class MessageSender
{
    private readonly IReadOnlyList<IMessageSender> _senders;

    /*inject IReadOnlyList<IMessageSender> with DI*/
    public MessageSender(IReadOnlyList<IMessageSender> senders)
    {
        _senders = senders;
    }

    public void Send(int messageType)
    {
        var sender = _senders.FirstOrDefault(it => it.MessageType == messageType);
        if(sender == null)
            throw new InvalidOperationException($"Unable to send message of type {messageType}")  ;
        sender.Send();
    }
}

在包含1-1到12-2的单元格中,excel不会干涉我,但是从13-1开始直到第n行,它会显示警告&#34; 文本日期与2位数年份&#34;。不幸的是,这真的不是日期。此外,我已经尝试在输入任何值之前将所述行/单元格格式化为文本,但实际上当excel看到&#34; 13-1&#34;以上,它显示错误。我该如何解决这个问题?

附加信息:当使用公式显示行时,没有错误,但遗憾的是,使用公式不是一个选项,我需要按原样使用值。

5 个答案:

答案 0 :(得分:4)

您可以输入=“1-1”而不是1-1 当您键入1-1时,excel将此更改为1-Jan。键入=“1-1”时,Excel将该值视为字符串。希望它有所帮助。

答案 1 :(得分:3)

只需右键单击列单击格式单元格...在类别列表上的数字选项卡上选择文本,这将输入您输入的任何内容或作为文本。

但是如果你是复制粘贴数据,那么使用匹配目标格式(M),只需右键单击单元格并选择匹配目标格式(M)而不是Ctrl-V。

答案 2 :(得分:0)

关闭这些错误类型的错误检查。

With Application.ErrorCheckingOptions
    .TextDate = False
    .NumberAsText = False
End With

还可在文件,选项,公式,错误检查规则中找到。

答案 3 :(得分:0)

如果在日期开头添加单引号,Excel会将其视为字符串。也适用于作为文本的数字

答案 4 :(得分:0)

阻止 excel 将复制粘贴的数字/文本值转换为日期

  1. 复制原始数据
  2. 粘贴到记事本/记事本++
  3. 在 Excel 中,将单元格格式/数字格式(默认显示“常规”)更改为文本
  4. 从记事本复制您的数据
  5. 粘贴回Excel 单元格,其中已将格式更改为文本