Calcular fechas lunares usando Excel
StrShort = StrA
StrLong = StrB
LenShort = Len(StrA)
LenLong = Len(StrB)
Otros
StrShort = StrB
StrLong = StrA
LenShort = Len(StrB)
LenLong = Len(StrA)< /p >
End If 'Primero compara las longitudes de las palabras y asigna valores para I = LenShort a 1 Paso-1 'Recorre desde la longitud máxima de caracteres Len Short hasta el carácter más corto StrShort "I" veces
Para j =. 1 a len short-I+1 'Para la palabra más corta StrShort, comience desde su primera letra y realice un bucle de acuerdo con la longitud de la palabra "I"
StrC = Mid(StrShort, j , I)' de lo anterior Tome los caracteres seleccionados de entre los caracteres, comenzando desde la primera letra, ordenados por longitud de palabra "I", como caracteres de comparación
Para k = 1 a lenlong-i+. 1 'Para la palabra más larga StrLong, comienza con la primera letra y termina con la misma longitud de palabra "I"
StrD = Mid(StrLong,k,I)' Tome el carácter anterior StrLong y seleccione el longitud de palabra "I" desde la primera letra "Compare los mismos caracteres;
Si StrD = StrC, compare. Si los contenidos comparados son iguales, la función tiene el resultado correcto.
Bj = StrC 'Resultado de salida.
"Salir de la función" finaliza la función
Terminará si...
Siguiente k
Siguiente j
Siguiente función iEnd
Forma de cadena mayúscula de la función rmbs (variante RNG)
Inestable
Si no es vba es numérico (RNG) luego rmbs = " ": función de salida 'Devuelve cero si no es un número
Si RNG = " "entonces rmbs = "": función de salida 'Devuelve nulo si es nulo <. /p>
Si RNG = 0, entonces RMB = "":función de salida 'Si 0, devuelve "redondeo a cero".
Rmbs = replace(apply.text(round(RNG,2),"[dbnum2]","","circle"),"-","negative")' con una precisión de dos dígitos, el punto decimal se reemplaza por un círculo y el signo negativo se reemplaza por "negativo"
Rmbs = IIF (izquierda (derecha (rmbs, 3), 1) = "círculo", izquierda (rmbs, len(rmbs)). -1)&"ángulo"&right(rmbs,1)&"punto",iif(left(right(rmbs,2),1) = "círculo",rmbs&"ángulo",rmbs& amp; "círculo"))
Rmbs = Reemplazar(Reemplazar(Rmbs,"círculo cero","ángulo cero","ángulo cero)"Reemplazar el carácter del ángulo cero.
Función final Función pública NongLi (se puede seleccionar XX_DATE como fecha)
Dim MonthAdd(11), NongliData(99), Tiangan(9), Dizhi(11), Shuxiang ( 11), DayName(30), MonName(12)
Calendario lunar, calendario lunar, calendario lunar, calendario lunar
Dim GongliStr, NongliStr, NongliDayStr
Dim i, m ,n,k,isEnd,bit,TheDate 'Obtiene la hora actual del sistema.
CurTime = XX_DATE 'Nombre de Tiangan
Tiangan (0) = "Uno"
Tiangan (1) = "B"
Tallo Celestial(2) = "C"
Tallo Celestial(3) = "Ding"
Tallo Celestial(4) = "E"
Tallo Celestial (5) = "Ji"
Tallo del Cielo (6) = "Geng"
Tallo del Cielo (7) = "Corazón"
Tallo del Cielo (8 ) = "Ren"
p>Tallos Celestiales (9) = "癸"
Nombre de las Ramas Terrenales
Ramas Directas (0) = "子"
Sucursales Digital Directas (1) ="Ugly"
Di Zhi(2) ="Yin"
Di Zhi(3) ="Mao"
Di Zhi(4) =" Chen"
DiZhi(5) = "Sí"
DiZhi(6) = "Mediodía"
Pregunta 7) = "No"
Rama directa (8) = "Shen"
Rama directa (9) = "Tú"
Di Zhi (10) = "Xu"
Tierra (11) = "Mar"
Nombres de constelaciones de animales
Libros (0) = "Rata"
Afición a los libros (1) = "Vaca"
Afición a los libros (2) = "Tigre"
Afición a los libros (3) = "Conejo"
Afición a los libros (4) = "Dragón"
p>Erudito (5) = "Serpiente"
Erudito (6) = "Caballo"
Erudito (7) = "Oveja"
Afición a los libros (8) = "Mono"
Afición a los libros (9) = "Pollo"
Afición a los libros (10) = "Perro"
Afición a los libros (11) = "Cerdo"
Nombre de la fecha del calendario lunar
DayName(0) = "* "
DayName(1 ) = "Primer grado"
NombreDía(2) = "Nivel 2"
NombreDía(3) = "Tercer Grado"
NombreDía(4) = "Nivel 4"
DayName(5) = "El quinto día"
DayName(6) = "El sexto día"
DayName(7) = "El séptimo día"
nombre del día(8)= "Nivel 8"
NombreDía(9) = "Noveno día"
NombreDía(10) = "Día 10"
NombreDía(11) = "Once"
NombreDía(12) = "Doce"
NombreDía(13) = "Trece"
Nombre del día(14) = "14 "
Nombre del día(15) = "15 "
Nombre del día(16) = "Dieciséis"
NombreDía (17) = "Diecisiete"
NombreDía(18) = "18 "
NombreDía(19) = "Diecinueve"
NombreDía( 20 ) = "Veinte "
NombreDía(21) = "21 "
NombreDía(22) = "22 "
NombreDía(23) = "23 "
NombreDía(24) = "24 "
NombreDía(25) = "25 "
NombreDía(26) = "26 "
NombreDía(27) = "27 "
NombreDía(28) = "28 "
NombreDía(29) = "29 "
NombreDía( 30) = "Treinta"
Nombre del mes lunar
MonName(0) = "* "
MonName(1) = "Positivo"
MonName(2) = "dos "
MonName(3) = "tres"
MonName(4) = "cuatro"
MonName(5) = "cinco "
MonName( 6) = "seis "
MonName(7) = "siete "
MonName(8) = "ocho"
MonName(9) = "nueve "
MonName(10) = "十"
MonName(11) = "Eleven"
MonName(12) = "La "
Los primeros días de cada mes en el calendario gregoriano
MonthAdd(0) = 0
mes addd(1)= 31
MonthAdd( 2 ) = 59
AñadirMes(3) = 90
AgregarMes(4) = 120
AgregarMes(5) = 151
mes agregado(6)= 181
mes agregado(7)= 212
MesAgregado(8) = 243
MesAgregado(9) = 273
mes añadido(10)= 304
mes añadido(11)= 334
Datos lunares
NongliData(0) = 2635
NongliData(1) = 333387
NongliData(2) = 1701
NongliData(3) = 1748
NongliData(4) = 267701
p>NongliData(5) = 694
NongliData(6) = 2391
NongliData(7) = 133423
NongliData(8 ) = 1175
NongliData(9) = 396438
NongliData(10) = 3402
NongliData(11)= 3749
NongliData (12) = 331177
NongliData(13)= 1453
NongliData(14) = 694
NongliData(15)= 201326
NongliData( 16) = 2350
NongliData(17)= 465197
NongliData(18)= 3221
NongliData(19) = 3402
NongliData(20) = 400202
NongliData(21)= 2901
NongliData(22) = 1386
NongliData(23)= 267611 p>
NongliData(24) = 605
NongliData(25) = 2349
NongliData(26) = 137515
NongliData(27) = 2709
NongliData(28) = 464533
NongliData(29) = 1738
NongliData(30) = 2901
NongliData(31) = 330421
NongliData(32) = 1242
Nongli
Datos(33) = 2651
NongliData(34) = 199255
NongliData(35) = 1323
NongliData(36) = 529706
NongliData(37) = 3733
NongliData(38) = 1706
NongliData(39) = 398762
NongliData(40) = 2741
NongliData(41)= 1206
NongliData(42) = 267438
NongliData(43) = 2647
NongliData(44)= 1318
NongliData(45) = 204070
NongliData(46) = 3477
NongliData(47) = 461653
NongliData(48) = 1386
NongliData(49) = 2413
NongliData(50) = 330077
NongliData(51)= 1197
NongliData(52 ) = 2637
NongliData(53) = 268877
NongliData(54) = 3365
NongliData(55)= 531109
NongliData (56) = 2900
NongliData(57) = 2922
NongliData(58) = 398042
NongliData(59) = 2395
NongliData(60)= 1179
NongliData(61)= 267415
NongliData(62) = 2635
NongliData(63) = 661067
NongliData(64) = 1701
NongliData(65) = 1748
NongliData(66) = 398772
NongliData(67) = 2742 p>
NongliData(68) = 2391
NongliData(69) = 330031
NongliData(70)= 1175
NongliData(71)= 1611
NongliData(72) = 200010
NongliData(73) = 3749
NongliData(74) = 527717
NongliData(75) = 1452
NongliData(76) = 2742
NongliData(77) = 332397
NongliData(78) = 2350
NongliData( 79) = 3222
NongliData(80) = 268949
NongliData(81) = 3402
NongliData(82) = 3493
NongliData(83) = 133973
NongliData(84) = 1386
NongliData(85) = 4642
19
NongliData(86) = 605
NongliData(87) = 2349
NongliData(88) = 334123
NongliData(89 ) = 2709
NongliData(90) = 2890
NongliData(91) = 267946
NongliData(92) = 2773
NongliData (93) = 592565
NongliData(94)= 1210
NongliData(95) = 2651
NongliData(96) = 395863
NongliData(97) = 1323
NongliData(98) = 2707
NongliData(99) = 265877
Generar el año, mes y calendario actual del calendario gregoriano. día = = & gtGong Lister
curYear = Año(curTime)
curMonth = Mes(curTime)
curDay = Día(curTime)
GongGongliStr = curYear & amp "Año"
if(curMonth & lt;10)
GongliStr = GongGongliStr & amp0 & amp;Ke Yue& "Luna"
Otros
Gong liStr = Gong Gongli Str & amp Ke Yue & amp "Moon"
Terminará si...
if(curDay < ;10)
GongliStr = GongGongliStr & amp0 & amp;curDay & amp“日”
Otros
GongliStr = GongGongliStr & ampcurDay & amp "日"
Terminará si...
Hora de inicio 1921 Número de días desde el 8 de febrero: 1921-2-8 (el primer día del primer mes lunar).
la fecha =(cur año-1921)* 365+Int((cur año-1921)/4)+curDay+mes agregar(cur mes-1)-38
Si ((curYear Mod 4) = 0 y curMonth & gt2) entonces
Fecha = fecha + 1
Si... terminará
Calcular el tallos celestes del calendario lunar Ramas Terrestres Mes y Día.
isEnd = 0
m = 0
hacer
si(NongliData(m)<4095)entonces
k = 11
Otro
k = 12
Terminará si...
n = k p >
Hacer
Si (n & lt0) Entonces
Salir Hacer
Finalizar si...
GetNongliData( El valor del enésimo bit binario de m)
bit = NongliData(m)
Para i = 1 an paso 1
bit = Int(bit / 2)
Entonces
bit = bit Mod 2
si (la fecha & lt; = 29 + bit) entonces
isEnd = 1
Salir Do
Finalizar si...
TheDate = TheDate - 29 dígitos
n = n - 1
Timbre
Si (isEnd = 1) Entonces
Salir Do
Si... terminará
m = m + 1
Anillo
curAño = 1921 + m
curMes = k - n + 1
curDía = LaFecha p>
Si (k = 12) entonces
si (cur mes =(Int(NongliData(m)/65536)+1)) entonces
curMonth = 1 - curMonth
else if(cur mes & gt; (Int(NongliData(m)/65536)+1)) entonces
curMonth = curMonth - 1
Terminará si...
Terminará si...
Generar los signos zodiacales del calendario lunar = = & gtNon-lister
NongliStr = "Año Nuevo Lunar" &;天干((4年)60日)10日);DIZhi(((4年)module60)module12);"Año"
NongliStr = NongliStr & amp "(" & amp书香(((4年)Mod 60)Mod 12);")"
Generar mes y día lunar==>non-liDayStr
if(curMonth< ;1)luego
NongliDayStr = " salto " & MonName(-1 * curMonth)
Otro
NongliDayStr = MonName(curMonth)
Si...terminará
NongliDayStr = NongliDayStr & "Moon"
NongliDayStr = NongliDayStr & ampday name(curDay)NongLi = NongliStr & amp;NongliDayStrEnd function Este es el código para el mismo período del calendario lunar para calcular la función de fecha, días360.