Вы должны взглянуть на раздел окончательного руководства по анализу , так как это очень важно для понимания поведения вашего индекса.
По умолчанию ваше поле анализируется с использованием стандартный анализатор , который разбивает слова на дефис.
. Очень простой анализатор, который следует понимать, представляет собой анализатор пробелов , который разбивает входные данные на токены в пробелах символов.
Вы можете попробовать этот пример:
POST /solution
{
"mappings":{
"doc": {
"properties":{
"subject": {
"type": "string",
"analyzer": "whitespace"
}
}
}
}
}
GET /solution/_analyze
{
"field": "subject",
"text": "This is about abdominal-scan"
}
, который выводит:
{
"tokens": [
{
"token": "This",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 0
},
{
"token": "is",
"start_offset": 5,
"end_offset": 7,
"type": "word",
"position": 1
},
{
"token": "about",
"start_offset": 8,
"end_offset": 13,
"type": "word",
"position": 2
},
{
"token": "abdominal-scan",
"start_offset": 14,
"end_offset": 28,
"type": "word",
"position": 3
}
]
}
Вы можете видеть, что ваш дефис сохраняется в этом случае.
В выбранном вами случае рассматриваются имена рабочих листов, а не переменные, назначенные объектам рабочего листа.
Sub dateins()
' Date as Mo and year. Current month minus one.
Dim dash As Worksheet, daily As Worksheet, mon As Worksheet
Dim Thisday As Date, Rptmon As Date, ws As Worksheet
Set dash = Sheets("Dashboard")
Set daily = Sheets("Daily")
Set mon = Sheets("Monthly")
Thisday = Date
Rptmon = DateAdd("m", -1, Thisday)
For Each ws In ThisWorkbook.Sheets
Select Case ws.Name
Case "Dashboard", "Daily", "Monthly"
If ws.Range("A2") = "" Then
ws.Range("A2") = Rptmon
ws.Range("A2").numberformat = "mmmm yyyy"
End If
End Select
Next ws
End Sub
Вы хотите назначить истинную дату для A2 и позволить формату ячейки отображать "мммм гггг" .